Tipy pro aplikace Delphi pro více rozlišení

click fraud protection

Při navrhování formuláře v Delphi, je často užitečné napsat kód tak, aby vaše aplikace (formuláře a všechny objekty) vypadala v podstatě stejná bez ohledu na to, jaké je rozlišení obrazovky.

První věc, kterou si chcete zapamatovat brzy ve fázi návrhu formuláře, je to, zda chcete povolit změnu měřítka formuláře nebo ne. Výhodou škálování není, že se za běhu nic nezmění. Nevýhodou není škálování je to za běhu se nic nemění (váš formulář může být příliš malý nebo příliš velký, aby jej bylo možné přečíst na některých systémech, pokud není upraveno v měřítku).

Pokud nechcete měnit měřítko formuláře, nastavte Měřítko na False. V opačném případě nastavte vlastnost na true. Také nastavit Automatické rolování na FALSE: opak by znamenal, že se nezmění velikost rámce formuláře za běhu, což nevypadá dobře, když je obsah formuláře dělat změnit velikost.

Důležité úvahy

Nastavte písmo formuláře na škálovatelné písmo TrueType, například Arial. Pouze Arial vám poskytne písmo v pixelu požadované výšky. Pokud písmo použité v aplikaci není nainstalován v cílovém počítači, systém Windows vybere alternativní písmo z téže rodiny písem, které se má použít namísto.

instagram viewer

Nastavte formulář Pozice majetek něčemu jinému než poDesigned, což ponechá formulář tam, kde jste ho nechali v době návrhu. Na obrazovce 1280x1024 to obvykle končí zcela doleva a zcela na obrazovce 640x480.

Nepoužívejte davové ovládací prvky ve formuláři - mezi ovládacími prvky ponechte alespoň 4 pixely, aby se změna v jednom ohraničení v hraničních umístěních (kvůli změně měřítka) nezobrazila jako překrývající se ovládací prvky.

Pro štítky s jedním řádkem, které jsou vlevo nebo v pořádku zarovnané, nastavené Automatická velikost Pravda. Jinak nastavte Automatická velikost na False.

Ujistěte se, že v komponentě štítku je dostatek volného místa, aby bylo možné měnit šířku písma - prázdné místo, které je 25% délky aktuální tětiva délka displeje je příliš velká, ale bezpečná. Pokud plánujete přeložit aplikaci do jiných jazyků, budete potřebovat alespoň 30% prostoru pro rozšíření řetězců. Li Automatická velikost je False, ujistěte se, že jste správně nastavili šířku štítku. Li Automatická velikost je pravda, ujistěte se, že je dostatek prostoru pro samotný štítek.

U štítků s více řádky, zabalených do slov ponechte ve spodní části alespoň jeden řádek mezery. Budete to potřebovat k zachycení přetečení, když se text zalomí jinak, když se změní šířka písma pomocí změny měřítka. Nepředpokládejte, že protože používáte velká písma, nemusíte počítat s přetečením textu - velká písma někoho jiného mohou být větší než ta vaše!

Při otevírání projektu v IDE buďte opatrní při různých rozlišeních. Formulář je PixelsPerInch Vlastnost bude změněna, jakmile je formulář otevřen, a bude uložena do DFM, pokud projekt uložíte. Nejlepší je vyzkoušet aplikaci spuštěním samostatné aplikace a úpravou formuláře pouze v jednom rozlišení. Úpravy při různých rozlišeních a velikostech písma způsobují problémy s posunem a velikostí součástí. Ujistěte se, že jste nastavili PixelsPerInch pro všechny vaše formuláře do 120. Výchozí hodnota je 96, což způsobuje problémy se škálováním při nižším rozlišení.

Když už mluvíme o drift komponenty, neměňte měřítko formuláře vícekrát, v době návrhu nebo runtime. Každá změna měřítka představuje chyby zaokrouhlování, které se hromadí velmi rychle, protože souřadnice jsou přísně integrální. Protože jsou zlomkové částky zkráceny od původů a velikostí kontrol při každém následném změně měřítka, bude se zdát, že se ovládací prvky plazí na severozápad a zmenšují se. Pokud chcete svým uživatelům umožnit, aby změnili měřítko formuláře opakovaně, začněte před každou změnou měřítka čerstvě načteným / vytvořeným formulářem, aby nedošlo k hromadění chyb při změně měřítka.

Obecně není nutné navrhovat formuláře v jakémkoli konkrétním rozlišení, ale je zásadní, abyste je zkontrolovali vzhled při 640 x 480 s velkými a malými písmeny a ve vysokém rozlišení s malými a velkými písmeny, před uvolněním vaše aplikace. To by mělo být součástí vašeho běžného kontrolního seznamu testování kompatibility systému.

Věnujte zvýšenou pozornost všem součástkám, které jsou v zásadě jednořádkové TMemos—věci jako TDBLookupCombo. Ovládací prvek úpravy více řádků systému Windows vždy zobrazuje pouze celé řádky textu - pokud je ovládací prvek pro jeho písmo příliš krátký, a TMemo neukáže vůbec nic (a TEdit zobrazí oříznutý text). Pro takové komponenty je lepší, aby byly o několik pixelů příliš velké, než aby byly o jeden pixel příliš malé a vůbec nezobrazovaly žádný text.

Mějte na paměti, že veškeré měřítko je úměrné rozdílu ve výšce písma mezi runtime a designovým časem, ne rozlišení pixelů nebo velikost obrazovky. Pamatujte také, že původ ovládacích prvků se změní, jakmile se změní měřítko formuláře - nemůžete velmi dobře zvětšit komponenty, aniž byste je také trochu posunuli.

Kotvy, zarovnání a omezení: Třetí strana VCL

Jakmile budete vědět, jaké problémy je třeba mít na paměti při změně měřítka formulářů Delphi na různých rozlišeních obrazovky, jste na některé připraveni kódování.

Při práci s Delphi verze 4 nebo vyšší je navrženo několik vlastností, které nám pomáhají udržovat vzhled a rozvržení ovládacích prvků ve formuláři.

Použití Zarovnat zarovnat ovládací prvek nahoře, vlevo dole nebo napravo od formuláře nebo panelu a ponechat jej tam, i když se změní velikost formuláře, panelu nebo komponenty, která obsahuje ovládací prvek. Při změně velikosti nadřazeného prvku se zarovná ovládací prvek také změní tak, aby pokračoval v překlenutí horního, dolního, levého nebo pravého okraje nadřazeného prvku.

Použití Omezení k určení minimální a maximální šířky a výšky ovládacího prvku. Pokud omezení obsahuje maximální nebo minimální hodnoty, nelze změnit velikost ovládacího prvku, aby tato omezení byla porušena.

Použití Kotvy k zajištění toho, aby si ovládací prvek udržel svou aktuální polohu vzhledem k okraji svého nadřazeného prvku, i když je nadřízený změněn. Při změně velikosti nadřazeného prvku ovládací prvek udržuje svou polohu vzhledem k okrajům, ke kterým je ukotven. Pokud je ovládací prvek ukotven k protilehlým okrajům nadřazené jednotky, ovládací prvek se roztahuje, jakmile se změní velikost nadřazené jednotky.

procedura ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
začít
F.Scaled: = True;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font. Jméno: = 'Arial';
if (Screen. Width <> ScreenWidth) poté začněte
F.High: =
LongInt (F.Height) * LongInt (obrazovka. Výška)
div ScreenHeight;
F. Šířka: =
LongInt (F.Width) * LongInt (Screen. Šířka)
div ScreenWidth;
F.ScaleBy (obrazovka. Width, ScreenWidth);
konec;
konec;
instagram story viewer