Beim Entwerfen von Formularen in Delphi ist es oft nützlich, den Code so zu schreiben, dass Ihre Anwendung (Formulare und alle Objekte) im Wesentlichen gleich aussieht, unabhängig von der Bildschirmauflösung.
Das erste, woran Sie sich in der Phase des Formularentwurfs erinnern möchten, ist, ob das Formular skaliert werden kann oder nicht. Der Vorteil, nicht zu skalieren, besteht darin, dass sich zur Laufzeit nichts ändert. Der Nachteil, nicht zu skalieren, ist der zur Laufzeit ändert sich nichts (Ihr Formular ist auf einigen Systemen möglicherweise viel zu klein oder zu groß, um es zu lesen, wenn es nicht skaliert ist.).
Wenn Sie das Formular nicht skalieren möchten, legen Sie fest Skaliert zu falsch. Andernfalls setzen Sie die Eigenschaft auf True. Stellen Sie auch ein Auto Scroll zu False: Das Gegenteil würde bedeuten, die Rahmengröße des Formulars zur Laufzeit nicht zu ändern, was nicht gut aussieht, wenn der Inhalt des Formulars stimmt tun Größe ändern.
Legen Sie die Schriftart des Formulars auf eine skalierbare TrueType-Schriftart wie Arial fest. Nur Arial gibt Ihnen eine Schrift innerhalb eines Pixels der gewünschten Höhe. Wenn die in einer Anwendung verwendete Schriftart nicht auf dem Zielcomputer installiert ist, wählt Windows stattdessen eine alternative Schriftart innerhalb derselben Schriftfamilie aus.
Legen Sie die Formulare fest Position Eigentum an etwas anderes als poDesigned, Dadurch bleibt das Formular an der Stelle, an der Sie es zur Entwurfszeit verlassen haben. Dies endet normalerweise auf einem 1280x1024-Bildschirm ganz links und auf einem 640x480-Bildschirm ganz links.
Verschieben Sie die Steuerelemente auf dem Formular nicht mit einer Menge von mindestens 4 Pixeln zwischen den Steuerelementen, damit eine Änderung der Randpositionen um 1 Pixel (aufgrund der Skalierung) nicht als überlappende Steuerelemente angezeigt wird.
Für einzeilige Beschriftungen alLeft oder in Ordung ausgerichtet, gesetzt Automatische Größenanpassung zu wahr. Ansonsten setzen Automatische Größenanpassung zu falsch.
Stellen Sie sicher, dass in einer Beschriftungskomponente genügend Leerraum vorhanden ist, um Änderungen der Schriftbreite zuzulassen. Ein Leerraum, der 25% der Länge der aktuellen Zeichenfolgeanzeigelänge entspricht, ist etwas zu groß, aber sicher. Sie benötigen mindestens 30% Erweiterungsspeicherplatz für Zeichenfolgenbezeichnungen, wenn Sie Ihre App in andere Sprachen übersetzen möchten. Wenn Automatische Größenanpassung Ist False, stellen Sie sicher, dass Sie die Etikettenbreite richtig eingestellt haben. Wenn Automatische Größenanpassung Stimmt, stellen Sie sicher, dass genügend Platz für das Etikett vorhanden ist, um von selbst zu wachsen.
Lassen Sie bei mehrzeiligen Etiketten mit Zeilenumbruch mindestens eine Leerzeile unten. Sie benötigen dies, um den Überlauf aufzufangen, wenn der Text anders umbrochen wird, wenn sich die Schriftbreite mit der Skalierung ändert. Gehen Sie nicht davon aus, dass Sie bei der Verwendung großer Schriftarten keinen Textüberlauf zulassen müssen, da die großen Schriftarten anderer möglicherweise größer sind als Ihre!
Seien Sie vorsichtig beim Öffnen eines Projekts in der IDE mit unterschiedlichen Auflösungen. Die Formen PixelsPerInch Die Eigenschaft wird beim Öffnen des Formulars geändert und beim Speichern des Projekts im DFM gespeichert. Am besten testen Sie die App, indem Sie sie eigenständig ausführen und das Formular mit nur einer Auflösung bearbeiten. Das Bearbeiten mit unterschiedlichen Auflösungen und Schriftgrößen führt zu Problemen bei der Drift und Größenänderung von Komponenten. Stellen Sie sicher, dass Sie Ihre PixelsPerInch für alle Ihre Formulare auf 120. Der Standardwert ist 96, was bei einer niedrigeren Auflösung zu Skalierungsproblemen führt.
Apropos Komponentendrift: Skalieren Sie ein Formular weder zur Entwurfszeit noch zur Laufzeit mehrmals neu. Jede Neuskalierung führt zu Rundungsfehlern, die sich sehr schnell ansammeln, da die Koordinaten streng einstückig sind. Da bei jeder erneuten Skalierung Bruchbeträge von den Ursprüngen und Größen des Steuerelements abgeschnitten werden, scheinen sich die Steuerelemente nach Nordwesten zu schleichen und kleiner zu werden. Wenn Sie Ihren Benutzern erlauben möchten, das Formular beliebig oft neu zu skalieren, beginnen Sie vor jeder Skalierung mit einem frisch geladenen / erstellten Formular, damit sich keine Skalierungsfehler ansammeln.
Im Allgemeinen ist es nicht erforderlich, Formulare mit einer bestimmten Auflösung zu entwerfen. Es ist jedoch von entscheidender Bedeutung, dass Sie ihr Erscheinungsbild bei 640 x 480 mit großen und kleinen Schriftarten und bei einer hohen Auflösung mit kleinen und großen Schriftarten überprüfen, bevor Sie Ihre App freigeben. Dies sollte Teil Ihrer regelmäßigen Checkliste für Systemkompatibilitätstests sein.
Achten Sie genau auf Komponenten, die im Wesentlichen einzeilig sind TMemos-Dinge wie TDBLookupCombo. Das mehrzeilige Windows-Bearbeitungssteuerelement zeigt immer nur ganze Textzeilen an - wenn das Steuerelement für seine Schriftart zu kurz ist, a TMemo wird überhaupt nichts zeigen (a TEdit wird abgeschnittenen Text anzeigen). Für solche Komponenten ist es besser, sie ein paar Pixel zu groß als ein Pixel zu klein zu machen und überhaupt keinen Text anzuzeigen.
Beachten Sie, dass die gesamte Skalierung proportional zum Unterschied in der Schriftgröße zwischen Laufzeit und Entwurfszeit ist, nicht die Pixelauflösung oder Bildschirmgröße. Denken Sie auch daran, dass sich der Ursprung Ihrer Steuerelemente ändert, wenn das Formular skaliert wird. Sie können die Komponenten nur vergrößern, wenn Sie sie auch ein wenig verschieben.
Sobald Sie wissen, welche Probleme beim Skalieren von Delphi-Formularen auf verschiedenen Bildschirmauflösungen zu beachten sind, können Sie mit dem Codieren beginnen.
Bei der Arbeit mit Delphi Version 4 oder höher wurden mehrere Eigenschaften entwickelt, um das Erscheinungsbild und Layout der Steuerelemente in einem Formular beizubehalten.
Verwenden Ausrichten Sie können ein Steuerelement am oberen, unteren linken oder rechten Rand eines Formulars oder Fensters ausrichten und es dort lassen, auch wenn sich die Größe des Formulars, Fensters oder der Komponente, die das Steuerelement enthält, ändert. Wenn die Größe des übergeordneten Elements geändert wird, wird auch die Größe eines ausgerichteten Steuerelements so geändert, dass es sich weiterhin über den oberen, unteren, linken oder rechten Rand des übergeordneten Elements erstreckt.
Verwenden Einschränkungen um die minimale und maximale Breite und Höhe des Steuerelements anzugeben. Wenn Einschränkungen Maximal- oder Minimalwerte enthalten, kann die Größe des Steuerelements nicht geändert werden, um diese Einschränkungen zu verletzen.
Verwenden Anker um sicherzustellen, dass ein Steuerelement seine aktuelle Position relativ zu einer Kante seines übergeordneten Elements beibehält, auch wenn die Größe des übergeordneten Elements geändert wird. Wenn die Größe des übergeordneten Elements geändert wird, behält das Steuerelement seine Position relativ zu den Kanten bei, an denen es verankert ist. Wenn ein Steuerelement an gegenüberliegenden Rändern seines übergeordneten Elements verankert ist, wird das Steuerelement gedehnt, wenn die Größe seines übergeordneten Elements geändert wird.
Verfahren ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
Start
F.Scaled: = True;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font.Name: = 'Arial';
if (Screen.Width ScreenWidth) dann beginne
F.Height: =
LongInt (F.Height) * LongInt (Screen.Height)
div ScreenHeight;
F. Breite: =
LongInt (F.Width) * LongInt (Screen.Width)
div ScreenWidth;
F.ScaleBy (Screen.Width, ScreenWidth);
Ende;
Ende;