Pri navrhovaní formuláre v Delphi, je často užitočné napísať kód tak, aby vaša aplikácia (formuláre a všetky objekty) vyzerala v podstate rovnaká bez ohľadu na to, aké je rozlíšenie obrazovky.
Prvou vecou, ktorú si chcete zapamätať skoro vo fáze návrhu formulára, je to, či povolíte zmenu mierky alebo nie. Výhodou škálovania nie je to, že sa za behu programu nič nemení. Nevýhodou škálovania je to za behu sa nič nemení (Váš formulár môže byť príliš malý alebo príliš veľký na čítanie v niektorých systémoch, ak nie je v mierke).
Ak nechcete meniť mierku, nastavte ju Scaled na False. V opačnom prípade nastavte vlastnosť na true. Tiež nastaviť Automatické posúvanie na False: Opak by znamenal nezmeniť veľkosť rámca formulára za behu, čo nevyzerá dobre, keď je obsah formulára robiť zmeniť veľkosť.
Dôležité úvahy
Nastavte písmo formulára na škálovateľné písmo TrueType, napríklad Arial. Iba Arial vám dá písmo v pixeli požadovanej výšky. Ak písmo použité v aplikácii nie je Ak je nainštalovaný v cieľovom počítači, systém Windows vyberie alternatívne písmo z tej istej rodiny písiem, ktoré sa má použiť miesto.
Nastavte formulár pozície majetok niečomu inému ako poDesigned, čo ponecháva formulár na mieste, kde ste ho nechali v čase návrhu. Na obrazovke s rozlíšením 1280 x 1024 to zvyčajne končí úplne vľavo a úplne na obrazovke s rozlíšením 640 x 480.
Nepoužívajte davové ovládacie prvky vo formulári - medzi ovládacími prvkami ponechajte najmenej 4 pixely, aby sa zmena v jednom ohraničení v hraničných umiestneniach (v dôsledku zmeny mierky) nezobrazila ako prekrývajúce sa ovládacie prvky.
Pre štítky s jedným riadkom, ktoré sú alLeft alebo poriadku zarovnané, nastavené AutoSize Pravda. V opačnom prípade nastavte AutoSize na False.
Uistite sa, že v komponente štítka je dostatok voľného miesta na umožnenie zmien šírky písma - medzera, ktorá predstavuje 25% dĺžky aktuálnej povrázok dĺžka displeja je príliš veľká, ale bezpečná. Ak plánujete preložiť svoju aplikáciu do iných jazykov, budete potrebovať aspoň 30% priestoru na rozšírenie reťazcov. ak AutoSize je False, uistite sa, že ste skutočne nastavili šírku štítka správne. ak AutoSize je pravda, uistite sa, že je dostatočný priestor na to, aby štítok mohol rásť sám.
Na štítkoch s viacerými riadkami a slovami zabalenými v texte ponechajte v dolnej časti najmenej jeden riadok medzery. Toto nastavenie budete potrebovať na zachytenie pretečenia, keď sa text zalomí inak, keď sa šírka písma zmení mierkou. Nepredpokladajte, že pretože používate veľké písma, nemusíte povoliť pretečenie textu - veľké písma iného používateľa môžu byť väčšie ako vaše!
Pri otváraní projektu v IDE buďte opatrní pri rôznych rozlíšeniach. Formulár je PixelsPerInch vlastnosť sa zmení ihneď po otvorení formulára a uloží sa do DFM, ak projekt uložíte. Najlepšie je otestovať aplikáciu tak, že ju spustíte samostatne a upravíte formulár iba v jednom rozlíšení. Úpravy pri rôznych rozlíšeniach a veľkostiach písma spôsobujú problémy s posunom a veľkosťou komponentu. Uistite sa, že ste nastavili svoj PixelsPerInch pre všetky vaše formuláre do 120. Predvolená hodnota je 96, čo spôsobuje problémy so škálovaním pri nižšom rozlíšení.
Keď už hovoríme o drifte komponentov, nemeňte veľkosť formulára viackrát, v čase návrhu alebo beh programu. Každá zmena mierky predstavuje chyby zaokrúhlenia, ktoré sa hromadí veľmi rýchlo, pretože súradnice sú úplne neoddeliteľnou súčasťou. Keď sa zlomkové množstvá skrátia od pôvodov a veľkostí kontroly pri každej postupnej zmene mierky, zdá sa, že sa kontrolné prvky plazia na severozápad a zmenšujú sa. Ak chcete svojim používateľom povoliť, aby zmenili veľkosť mierky viackrát, začnite s novým načítaním / vytvorením formulára pred každou mierkou, aby sa hromadili chyby mierky.
Vo všeobecnosti nie je potrebné navrhovať formuláre v žiadnom konkrétnom uznesení, ale je nevyhnutné, aby ste ich prehodnotili vzhľad pri rozlíšení 640 x 480 s veľkými a malými písmenami a vo vysokom rozlíšení s malými a veľkými písmenami pred uvoľnením svoju aplikáciu. Malo by to byť súčasťou vášho bežného kontrolného zoznamu na testovanie kompatibility so systémom.
Venujte zvýšenú pozornosť všetkým komponentom, ktoré sú v podstate jednoriadkové TMemos-veci ako TDBLookupCombo. Ovládací prvok úpravy viacerých riadkov systému Windows vždy zobrazuje iba celé riadky textu - ak je ovládací prvok pre jeho písmo príliš krátky, a TMemo neukáže vôbec nič (a editačné zobrazí orezaný text). V prípade takýchto komponentov je lepšie urobiť z nich niekoľko pixelov príliš veľké, než aby boli jeden pixel príliš malé a vôbec nezobrazovať žiadny text.
Nezabúdajte, že všetky úpravy mierky sú úmerné rozdielu výšky písma medzi časom behu a časom návrhu, nie rozlíšenie pixlov alebo veľkosť obrazovky. Nezabudnite tiež, že pôvod ovládacích prvkov sa zmení, keď sa zmení veľkosť formulára - nemôžete veľmi dobre zväčšiť komponenty bez toho, aby ste ich trochu presunuli.
Kotvy, zarovnanie a obmedzenia: VCL
Keď viete, aké problémy je potrebné mať na pamäti pri zmene mierky formulárov Delphi na rôznych rozlíšeniach obrazovky, ste na niektoré pripravení kódovanie.
Pri práci s Delphi verzie 4 alebo vyššej je navrhnutých niekoľko vlastností, ktoré nám pomáhajú udržiavať vzhľad a rozloženie ovládacích prvkov vo formulári.
použitie align na zarovnanie ovládacieho prvku na hornú, dolnú ľavú alebo pravú stranu formulára alebo panelu a nechať ho tam, aj keď sa zmení veľkosť formulára, panela alebo komponentu, ktorý obsahuje ovládací prvok. Keď je veľkosť rodiča zmenená, zarovnaná kontrola sa tiež zmení tak, aby pokračovala v preklenutí horného, dolného, ľavého alebo pravého okraja rodiča.
použitie obmedzenia špecifikovať minimálnu a maximálnu šírku a výšku ovládacieho prvku. Ak obmedzenia obsahujú maximálne alebo minimálne hodnoty, nie je možné zmeniť veľkosť ovládacieho prvku, aby tieto obmedzenia porušil.
použitie kotvy na zabezpečenie toho, aby si ovládač udržal svoju aktuálnu polohu vzhľadom k okraju svojho rodiča, aj keď je veľkosť rodiča zmenená. Keď sa zmení veľkosť nadradeného prvku, ovládací prvok si zachová svoju polohu vzhľadom k okrajom, ku ktorým je ukotvený. Ak je ovládací prvok ukotvený k protiľahlým okrajom svojho nadradeného prvku, ovládací prvok sa roztiahne, keď sa zmení veľkosť nadradeného prvku.
Postup ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
začať
F.Scaled: = True;
F.AutoScroll: = False;
F.Pozícia: = poScreenCenter;
F.Font. Meno: = 'Arial';
ak (obrazovka. Width <> ScreenWidth) potom začnite
F. Výška:
LongInt (F.Height) * LongInt (obrazovka. výška)
div ScreenHeight;
F. Šírka: =
LongInt (F.Width) * LongInt (Screen. šírka)
div ScreenWidth;
F.ScaleBy (obrazovka. Šírka, Šírka obrazovky);
koniec;
koniec;