Savjeti za Delphi aplikacije s više razlučivosti

Prilikom dizajniranja obrasci u Delphi, često je korisno napisati kôd tako da aplikacija (obrasci i svi objekti) izgleda bitno isto bez obzira na rezoluciju zaslona.

Prvo čega se već na početku želite sjetiti u fazi dizajna obrasca je hoćete li dopustiti da se obrazac prilagodi ili ne. Prednost ne skaliranja je u tome što se ništa ne mijenja tokom vremena izvođenja. Nedostatak ne skaliranja je taj ništa se ne mijenja tokom vremena izvođenja (vaš obrazac može biti previše mali ili prevelik za čitanje na nekim sustavima ako nije skaliran).

Ako nećete skalirati obrazac, postavite umanjena na Lažno. U suprotnom, postavite svojstvo na True. Također, postavite SamoKlizanje na Lažno: suprotno značilo bi da ne mijenjate veličinu okvira forme u vrijeme izvođenja, što ne izgleda dobro kad sadržaj forme čini promijeniti veličinu.

Važna razmatranja

Podesite font obrasca na skalabilni font TrueType, poput Arial. Samo Arial dat će vam font unutar piksela željene visine. Ako font koji se koristi u aplikaciji nije instaliranom na ciljanom računalu, tada će Windows odabrati alternativni font unutar iste porodice fontova koji će se koristiti umjesto toga.

instagram viewer

Postavite obrasce Položaj svojstvo na nešto drugo osim poDesigned, što ostavlja oblik tamo gdje ste ga ostavili u vrijeme dizajna. Obično se završava na lijevoj strani zaslona 1280x1024 i potpuno se isključi s 640x480 zaslonom.

Nemojte gomilati kontrole na obrascu - ostavite najmanje 4 piksela između kontrola kako se promjena u jednom pikselu na rubnim mjestima (zbog skaliranja) neće prikazati kao preklapajuće kontrole.

Za jednoredne naljepnice koje su alLeft ili Dobro poravnati, postaviti automatske prilagodbe do Istine. Inače, postavite automatske prilagodbe na Lažno.

Provjerite ima li dovoljno praznog prostora u komponenti naljepnice za dopuštanje promjena širine fonta - prazan prostor koji iznosi 25% duljine struje niz duljina prikaza malo je previše, ali sigurno. Ako planirate prevesti svoju aplikaciju na druge jezike, trebate najmanje 30% prostora za proširenje za naljepnice niza. Ako automatske prilagodbe je lažno, provjerite jeste li stvarno namjestili širinu naljepnice na odgovarajući način. Ako automatske prilagodbe Točno, provjerite ima li dovoljno mjesta da naljepnica raste sama.

Na više linija, s naljepnicama za riječi, na dnu ostavite barem jedan prazan prostor. Ovo će vam trebati za uhvatiti preljev kada se tekst drugačije omota kada se širina fonta promijeni skaliranjem. Ne pretpostavljajte da, budući da koristite velike fontove, ne morate dopustiti prelijevanje teksta - tuđi veliki font može biti veći od vašeg!

Budite oprezni pri otvaranju projekta u IDE-u s različitim rezolucijama. Obrazac je PixelsPerInch svojstvo će se izmijeniti čim se otvori obrazac i bit će spremljen u DFM ako spremite projekt. Aplikaciju je najbolje isprobati samostalnim pokretanjem i urediti obrazac u samo jednoj rezoluciji. Uređivanje u različitim razlučivosti i veličini fonta poziva na probleme sa smanjenjem veličine i veličine. Obavezno postavite svoje PixelsPerInch za sve vaše obrasce do 120. Zadano je na 96, što uzrokuje probleme s skaliranjem u nižoj rezoluciji.

Kada govorimo o nanošenju sastavnica, obrazac ne mijenjajte više puta u vrijeme dizajna ili dužina trajanja. Svako ponovno skaliranje uvodi zaokružene pogreške koje se nakupljaju vrlo brzo, jer su koordinate strogo integralne. Kako se frakcijski iznosi odvajaju od podrijetla i veličina kontrole pri svakom uzastopnom mijenjanju, kontrole će se činiti da pužu prema sjeverozapadu i postaju manje. Ako želite omogućiti svojim korisnicima da u bilo kojem trenutku promijene veličinu obrasca, započnite s netom učitanim / stvorenim obrascem prije svakog skaliranja kako se pogreške u skaliranju ne bi akumulirale.

Općenito, nije potrebno dizajnirati obrasce u bilo kojoj određenoj rezoluciji, ali je ključno da ih pregledate izgled u 640 x 480 s velikim i malim fontom, a u visokoj rezoluciji s malim i velikim fontom, prije nego što ih pustite vaša aplikacija. Ovo bi trebao biti dio vašeg redovitog popisa provjere kompatibilnosti sustava.

Obratite pozornost na sve sastavne dijelove koji su u osnovi jedno-linijski TMemos-stvari kao TDBLookupCombo. Windows uređivanje više redaka za uređivanje uvijek prikazuje samo cijele retke teksta - ako je kontrola prekratka za njegov font, a TMemo neće pokazati ništa uopće (a TEdit prikazivat će isečeni tekst). Za takve komponente bolje je napraviti nekoliko piksela prevelikim nego što su jedan pikseli premali i uopće ne prikazivati ​​nikakav tekst.

Imajte na umu da je cijelo skaliranje proporcionalno razlici u visini fonta između vremena izvršavanja i vremena dizajniranja, ne razlučivost piksela ili veličina zaslona. Imajte na umu i da će se podrijetlo kontrola promijeniti kad se oblik skalira - ne možete jako dobro povećati komponente bez da ih i malo premjestite.

Sidra, poravnavanje i ograničenja: VCL treće strane

Nakon što saznate koje sve probleme morate imati na umu prilikom skaliranja Delphi obrazaca na različitim razlučivim zaslonima, za neke ste spremni šifriranje.

Pri radu s Delphi verzijom 4 ili novijom, nekoliko je svojstava dizajnirano kako bi nam pomoglo u održavanju izgleda i izgleda kontrola na obrascu.

Koristiti Uskladiti za poravnavanje kontrole s gornjim, donjim lijevim ili desnim dijelom obrasca ili ploče i ostaje li tamo, čak i ako se promijeni veličina obrasca, panela ili komponente koja sadrži kontrolu. Kada se nadimak promijeni, usklađuje se i vrijednost kontrole tako da nastavlja raspon gornjeg, donjeg, lijevog ili desnog ruba roditelja.

Koristiti ograničenja odrediti minimalnu i maksimalnu širinu i visinu komande. Kad Ograničenja sadrže maksimalne ili minimalne vrijednosti, kontrola se ne može smanjiti kako bi se prekršila ta ograničenja.

Koristiti sidra kako bi se osiguralo da kontrola zadrži svoj trenutni položaj u odnosu na rub roditelja, čak i ako je roditelj promijenjen. Kada se njegov roditelj promijeni, regulator drži svoj položaj u odnosu na rubove na kojima je usidren. Ako je komanda usidrena na suprotnim rubovima svog nadređenog, kontrola se pruža kada se promijeni veličina roditelja.

postupak ScaleForm
(F: TForm; Širina zaslona, ​​visina zaslona: LongInt);
početi
F.Scaled: = Istina;
F.AutoScroll: = Lažno;
F.Position: = poScreenCenter;
F.Font. Naziv: = 'Arial';
ako (Zaslon. Širina <> širina zaslona), a zatim počnite
F.Height: =
LongInt (F.Height) * LongInt (ekran. Visina)
div ScreenHeight;
F. Širina: =
LongInt (F.Width) * LongInt (ekran. Širina)
div ScreenWidth;
F.ScaleBy (ekran. Širina, širina zaslona);
kraj;
kraj;