Entwickler-Ecke
Sonstiges (Delphi) - Bildschirmauflösungen / Schriftarten: Anpassungsproblem ...
georgfischerx - Mi 26.06.02 17:16
Titel: Bildschirmauflösungen / Schriftarten: Anpassungsproblem ...
Hallo allerseits,
weiss jemand, ob man das Proggi an alle Bildschirmauflösungen
anpassen kann ? Inklusive kleine/grosse Schriftarten ? Ich habe es
zwar geschafft, dass mein Proggi bei den Auflösungen 1280x1024,
1024x768, 800x600, 640x480 läuft - aber: Nur bei kleinen
Schriftarten. Mühsam ist das Leben, grausam und hart unter
Windows ...
Gruss, Georg
Tino - Mi 26.06.02 17:20
Wenn Du bei den Forms das Property Scaled auf True stehen hast dann müsste das von ganz alleine gehen!
Gruß
Torsten - Mi 26.06.02 17:24
Moinsen!
Ja, da gibt es was.
Zumindest bei den Schriftarten kann ich Dir helfen.
Also, folgendermaßen Deinen Code anpassen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| ...
private { Private-Deklarationen } FontDoFix : Boolean; // für Bestimmung der eingestellten Schriftgrösse FontDesignRes : Integer; // ----- ebenfalls ----
procedure FixSize; // zur Bestimmung der Schriftgrösse
...
procedure TForm1.FormCreate(Sender: TObject); begin FontDoFix := True; { zur Ermittlung der Schriftgroesse} FontDesignRes := 96; end;
...
procedure TForm1.FormShow(Sender: TObject); begin FixSize; // an Schriftart anpassen end; |
Nun die eigentliche Funktion:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| ...
procedure TForm1.FixSize; begin if FontDoFix then begin PixelsPerInch := Screen.PixelsPerInch; if (PixelsPerInch <> FontDesignRes) then begin Width := LongInt(Width * PixelsPerInch) div FontDesignRes; Height := LongInt(Height * PixelsPerInch) div FontDesignRes; end; FontDoFix := False; end; end;
.... |
Grüße
Torsten
georgfischerx - Mi 26.06.02 17:28
Titel: Property Scales auf True: Ja, überall ...
Hallo !
ich habe die Property Scaled überall auf True. Hilft nix. Die
Schrift in den Labels wird grösser, und auf meiner schönen
kleinen Form kommen hässliche Rollbalken ... Tja.
Das Leben ist doch hart unter Win9X ff.
Gruss, Georg
Torsten - Mi 26.06.02 17:35
Hast Du meinen Beitrag jetzt überlesen?
Grüße
Torsten
georgfischerx - Mi 26.06.02 17:41
Titel: Proggi an ALLE Bildschirmauflösungen/Schriftarten anpassen..
Sorry,
nein, ich habe Deinen Beitrag nicht überlesen. Nur als ich meinen
Beitrag abgesandt habe, war er noch nicht da. (Zeitüberschneidung)
Vielen Dank für Deine Antwort, ich werde es gleich morgen
ausprobieren !
Gruss, Georg
Torsten - Mi 26.06.02 17:43
Ach so, Schwein gehabt. ;)
Sollte eigentlich funktionieren. So nutze ich die Funktionen auch.
Grüße
Torsten
georgfischerx - Mi 26.06.02 18:30
Titel: Proggi an ALLE Bildschirmauflösungen/Schriftarten anpassen..
Tja,
ich habe es eben in mein Proggi eingebaut und ausprobiert. Es hat
nicht funktioniert. Mein Proggi kriegt Rollbalken, die Schrift ist
überall grösser als vorher (bei grossen Schriftarten) und wird in den
Labels umgebrochen.
Vielleicht sollte ich noch erwähnen, dass die Grösse der Form + Labels
immer korrekt ist. Sie wird bereits trickreich angepasst.
Nur die Buttons sind auch alle grösser.
Gruss, Georg
Torsten - Mi 26.06.02 21:42
OK, ich noch mal.
Mein Code geht davon aus, dass eine kleine Schriftart als Standard eingestellt ist.
Das bedeutet die 96 (96 dpi).
Der zweite Wert wäre 120 (also 120 dpi).
Eventuell liegt ja dort der Fehler.
Dennoch habe ich hier mal eine Funktion für Dich, mit der Du die eingestellte Schriftgröße ermitteln kannst.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function GetFontSize: Boolean; var size: Integer; handler: THandle; begin Result := False; handler := GetDc(HWND_DESKTOP); size := GetDeviceCaps(handler, logpixelsx); ReleaseDc(HWND_DESKTOP, handler); if size = 96 then Result := False else if size = 120 then Result := True; end; |
Eventuell hilft das ja weiter.
Grüße
Torsten
Torsten - Mi 26.06.02 21:44
Ach ja, noch was.
Wenn Deine Anwendung auch zur Laufzeit auf Änderungen reagieren soll, so muss lediglich die Botschaft WM_DISPLAYCHANGE ausgewertet werden.
Torsten
georgfischerx - Do 27.06.02 11:08
Titel: Bildschirmauflösungen/Schriftarten.
Hallo,
danke für Deinen Einsatz. Ich habe alles ausprobiert, aber es
funktioniert leider nicht. Was mache ich bloss falsch ? Wenn
ich in der Systemsteuerung / Anzeige die grossen Schriftarten
wähle, zerrupft es mir immer das Proggi-Bild ...
Gruss, Georg
toms - Do 27.06.02 11:20
Hi,
1. Setze ich Scaled jeweils auf False und nehme eine True-Type Schrift
(z.B Arial)
2. Setze ich die PITCH Eigenschaft der Schrift auf VARIABLE anstatt DEFAULT
tom
georgfischerx - Do 27.06.02 14:50
Titel: Bildschirmauflösungen / Schriftarten: Anpassungsproblem ...
Sorry,
aber es funktioniert leider alles nicht. Vielleicht habe ich mich
auch unklar ausgedrückt. Ich möchte eine einfache Angabe oder
Formel für das folgende Problem:
- Es liegt ein einfaches Formular in der Entwicklungsumgebung
mit den Massen 640 x 480 vor.
- Diese Formular mit allen Feldern und Knöpfen soll genaugleich
aussehen, egal ob die Auflösung 640x480 ist, 800x600 , 1024x768,
1280x1024 ist und egal, was man in Windows für eine SYSTEMSCHRIFTART unter Systemsteuerung: Anzeige: kleine/grosse Schriftarten eingestellt hat. Auch das Menu soll sich nicht ändern. Es
wird nämlich grösser, je nach Systemschriftart und hat keinen Platz
mehr in der Titelleiste. Ich hoffe, diese Beschreibung hilft weiter.
Wenn so etwas nicht möglich ist, frage ich mich, wozu ich programmiere.
WinWord kann das.
Gruss, Georg
georgfischerx - Do 27.06.02 16:51
Titel: Bildschirmauflösungen / Schriftarten: Anpassungsproblem ...
@Toms:
Dein Vorschlag war weitaus der Beste, was die unterschiedlichen
Schriftarten unter Windows betrifft (kleine Schriftarten / Grosse
Schriftarten) Er kommt dem Ideal schon sehr nahe, Bravo !
Gruss, Georg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!