Computerwissenschaften

Tipps für Delphi-Anwendungen mit mehreren Auflösungen

Beim Entwerfen von Formularen in Delphi ist es häufig nützlich, den Code so zu schreiben, dass Ihre Anwendung (Formulare und alle Objekte) unabhängig von der Bildschirmauflösung im Wesentlichen gleich aussieht.

Das erste, woran Sie sich zu Beginn der Formularentwurfsphase erinnern möchten, ist, ob Sie die Skalierung des Formulars zulassen oder nicht. Der Vorteil der Nichtskalierung besteht darin, dass sich zur Laufzeit nichts ändert. Der Nachteil der Nicht-Skalierung besteht darin, dass sich zur Laufzeit nichts ändert (Ihr Formular ist möglicherweise viel zu klein oder zu groß, um auf einigen Systemen gelesen zu werden, wenn es nicht skaliert ist).

Wenn Sie das Formular nicht skalieren möchten, setzen Sie  Skaliert  auf Falsch. Andernfalls setzen Sie die Eigenschaft auf True. Außerdem setzte Autoscroll auf False: das Gegenteil bedeuten würde , nicht die Form der Rahmengröße zur Laufzeit zu ändern, die nicht gut aussehen , wenn die Form des Inhalt tut Größe ändern.

 

Wichtige Überlegungen

Stellen Sie die Schriftart des Formulars auf eine skalierbare TrueType-Schriftart wie Arial ein. Nur Arial Sie innerhalb eines Pixels von der gewünschten Höhe einer Schriftart geben.  Wenn die Schriftart in einer Anwendung verwendet wird, nicht auf dem Zielcomputer installiert ist, dann Windows wird eine alternative Schriftart innerhalb der gleichen Schriftfamilie auswählen , anstatt zu verwenden.

Setzen Sie die Position- Eigenschaft des Formulars auf etwas anderes als poDesigned , wodurch das Formular dort verbleibt , wo Sie es zur Entwurfszeit belassen haben. Dies endet normalerweise weit links auf einem 1280 x 1024-Bildschirm – und vollständig außerhalb des 640 x 480-Bildschirms.

Überfüllen Sie das Formular nicht mit Steuerelementen. Lassen Sie zwischen den Steuerelementen mindestens 4 Pixel, damit eine Änderung der Randpositionen um ein Pixel (aufgrund der Skalierung) nicht als überlappende Steuerelemente angezeigt wird.

Setzen Sie für einzeilige Beschriftungen, die links oder rechts ausgerichtet sind, AutoSize auf True. Andernfalls setzen Sie AutoSize auf False.

Stellen Sie sicher, dass in einer Beschriftungskomponente genügend Leerzeichen vorhanden sind, um Änderungen der Schriftbreite zu ermöglichen. Ein Leerzeichen, das 25% der Länge der aktuellen Länge der Zeichenfolgenanzeige beträgt, ist etwas zu groß, aber sicher. Sie benötigen mindestens 30% Erweiterungsspeicherplatz für Zeichenfolgenbeschriftungen, wenn Sie Ihre App in andere Sprachen übersetzen möchten. Wenn AutoSize auf False gesetzt ist, stellen Sie sicher, dass Sie die Beschriftungsbreite tatsächlich entsprechend eingestellt haben. Wenn AutoSize True ist, stellen Sie sicher, dass genügend Platz vorhanden ist, damit das Etikett von selbst wachsen kann.

Lassen Sie bei mehrzeiligen, in Wörter eingeschlossenen Etiketten mindestens eine Zeile Leerzeichen unten. Sie benötigen dies, um den Überlauf abzufangen, wenn der Text anders umbrochen wird, wenn sich die Schriftbreite mit der Skalierung ändert. Gehen Sie nicht davon aus, dass Sie, da Sie große Schriftarten verwenden, keinen Textüberlauf zulassen müssen – die großen Schriftarten anderer Personen sind möglicherweise größer als Ihre!

Seien Sie vorsichtig, wenn Sie ein Projekt in der IDE mit unterschiedlichen Auflösungen öffnen. Die PixelsPerInch- Eigenschaft des Formulars wird beim Öffnen des Formulars geändert und beim Speichern des Projekts im DFM gespeichert. Testen Sie die App am besten, 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 mit der Drift und Größe der Komponenten. Stellen Sie sicher, dass Sie PixelsPerInch für alle Ihre Formulare auf 120 einstellen. Der Standardwert ist 96, was zu Skalierungsproblemen bei einer niedrigeren Auflösung führt.

Wenn Sie von Komponentendrift sprechen, skalieren Sie ein Formular nicht mehrmals zur Entwurfs- oder Laufzeit neu. Jede Neuskalierung führt zu Rundungsfehlern, die sich sehr schnell ansammeln, da die Koordinaten streng integriert sind. Wenn bei jeder sukzessiven Neuskalierung Teilmengen von den Ursprüngen und Größen der Kontrolle abgeschnitten werden, scheinen sich die Kontrollen nach Nordwesten zu kriechen 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 wichtig, dass Sie deren Erscheinungsbild bei 640 x 480 mit großen und kleinen Schriftarten und bei hoher 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 auf alle Komponenten , die im Wesentlichen einzeiligen 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, zeigt ein TMemo überhaupt nichts an (ein TEdit zeigt abgeschnittenen Text an). Für solche Komponenten ist es besser, sie ein paar Pixel zu groß zu machen, als ein Pixel zu klein zu sein und überhaupt keinen Text anzuzeigen.

Beachten Sie, dass die gesamte Skalierung proportional zum Unterschied in der Schrifthöhe zwischen Laufzeit und Entwurfszeit ist, nicht  zur Pixelauflösung oder Bildschirmgröße. Denken Sie auch daran, dass sich die Ursprünge Ihrer Steuerelemente ändern, wenn das Formular skaliert wird. Sie können Komponenten nicht sehr gut vergrößern, ohne sie auch ein wenig zu verschieben.

 

Anker, Ausrichtung und Einschränkungen: VCL von Drittanbietern

Sobald Sie wissen, welche Probleme beim Skalieren von Delphi-Formularen mit unterschiedlichen Bildschirmauflösungen zu beachten sind, können Sie mit der Codierung beginnen .

Wenn Sie mit Delphi Version 4 oder höher arbeiten, werden verschiedene Eigenschaften entwickelt, um das Erscheinungsbild und Layout von Steuerelementen in einem Formular beizubehalten.

Verwenden  Sie Ausrichten  , um ein Steuerelement oben, unten links oder rechts von einem Formular oder Bedienfeld auszurichten und dort zu belassen, auch wenn sich die Größe des Formulars, Bedienfelds oder der Komponente, die das Steuerelement enthält, ändert. Wenn die Größe des übergeordneten Steuerelements geändert wird, ändert sich auch die Größe eines ausgerichteten Steuerelements so, dass es sich weiterhin über den oberen, unteren, linken oder rechten Rand des übergeordneten Elements erstreckt.

Verwenden Sie  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 Sie  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 Kanten seines übergeordneten Steuerelements verankert ist, wird das Steuerelement gedehnt, wenn die Größe seines übergeordneten Elements geändert wird.

Prozedur ScaleForm 
(F: TForm; ScreenWidth, ScreenHeight: LongInt); 
begin 
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.Width:=
LongInt (F.Width) * LongInt (Screen.Width) 
div ScreenWidth; 
F.ScaleBy (Screen.Width, ScreenWidth); 
Ende; 
Ende;

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.