Näpunäited mitme eraldusvõimega Delphi rakenduste jaoks

Kujundamisel vormid sisse Delphi, on sageli kasulik kood kirjutada, nii et teie rakendus (vormid ja kõik objektid) näeks välja põhimõtteliselt sama, sõltumata sellest, milline on ekraani eraldusvõime.

Esimene asi, mida soovite vormi kujundamise etapis varakult meelde tuletada, on see, kas lubate vormil skaleerimist või mitte. Mitte skaleerimise eeliseks on see, et tööajas ei muutu midagi. Mastaapimise puuduseks on see tööajas ei muutu midagi (teie vorm võib olla liiga väike või liiga suur, et seda mõnes süsteemis lugeda, kui see pole skaleeritud).

Kui te ei kavatse vormi skaleerida, määrake Skaleeritud valele. Muul juhul määrake atribuut True. Ka seatud Automaatne kerimine valeks: vastupidine tähendaks vormi kaadrisuuruse mitte muutmist tööajas, mis ei tundu hea, kui vormi sisu teha muuda suurust.

Olulised kaalutlused

Seadke vormi font skaleeritavale TrueType-fondile, näiteks Arial. Ainult Arial annab teile fondi soovitud kõrgusega pikslites. Kui rakenduses kasutatav font pole installitud sihtarvutisse, siis valib Windows kasutatava alternatiivse fondi samas fontperekonnas selle asemel.

instagram viewer

Määra vormi Asend vara millekski muuks kui poDesigned, mis jätab vormi sinna, kuhu selle disaini ajal jätsite. Tavaliselt jõuab see 1280x1024 ekraanilt vasakule ja 640x480 ekraanile.

Ära koonda vormi juhtelemente - jätke juhtelementide vahele vähemalt 4 pikslit, nii et ühe piksli muutus piiride asukohas (skaleerimise tõttu) ei kuvataks kattunud juhtelementidena.

Üherealiste siltide jaoks, mis on alLeft või hea küll joondatud, seatud Automaatne suurus tõsi. Muidu seadke Automaatne suurus valele.

Veenduge, et sildikomponendis oleks piisavalt tühja ruumi, et võimaldada fondi laiuse muutmist - tühja ruumi, mis on 25% praeguse pikkusest nöör kuvari pikkus on pisut liiga palju, kuid ohutu. Kui plaanite oma rakenduse teistesse keeltesse tõlkida, vajate stringisiltide jaoks vähemalt 30% laiendusruumi. Kui Automaatne suurus on vale, veenduge, et olete siltide laiuse tegelikult õigesti määranud. Kui Automaatne suurus on tõsi, veenduge, et sildil oleks piisavalt ruumi omaette kasvatamiseks.

Mitmerealiste, sõnadega pakitud siltide korral jätke vähemalt üks rida tühja ruumi põhjale. Teil on seda vaja ülevoolu tabamiseks, kui tekst mähitakse teisiti, kui fondi laius muutub skaleerimisega. Ärge arvake, et kuna kasutate suuri fonte, ei pea te lubama teksti ületäitumist - kellegi teise suured fondid võivad olla teie omadest suuremad!

Olge IDE-s projekti avamisel erineva resolutsiooniga ettevaatlik. Vorm on PixelsPerInch atribuuti muudetakse kohe, kui vorm avatakse, ja projekti salvestamise korral salvestatakse see DFM-i. Parim on testida rakendust, käivitades selle eraldiseisvana, ja redigeerida vormi ainult ühe eraldusvõimega. Erineva eraldusvõime ja fondi suurusega redigeerimine põhjustab komponentide triivimise ja suuruse muutmise probleeme. Veenduge, et olete määranud oma PixelsPerInch kõigi teie vormide puhul 120-ni. Selle vaikeväärtus on 96, mis põhjustab madalama eraldusvõimega skaleerimisprobleeme.

Komponentide triivist rääkides ärge muutke vormi mitmekordistamiseks, disaini ajal või tööaeg. Iga muutmine toob kaasa ümardamisvead, mis kogunevad väga kiiresti, kuna koordinaadid on rangelt lahutamatud. Kuna murdosa kogused kärbitakse juhtseadme päritolu ja suuruse järgi iga järgneva muutmise korral, näivad juhtseadmed hiilivat loodesse ja muutuvad väiksemaks. Kui soovite, et kasutajad muudaksid vormi suvalisel arvul, siis alustage enne iga mastaapimist värskelt laaditud / loodud vormiga, nii et skaleerimisvead ei koguneks.

Üldiselt ei ole vaja vorme kujundada ühegi konkreetse eraldusvõime korral, kuid on oluline, et vaataksite need üle välimus 640x480 suurte ja väikeste fondidega ning suure eraldusvõimega väikeste ja suurte fondidega, enne vabastamist teie rakendus. See peaks olema osa teie regulaarsest süsteemi ühilduvuse testimise kontroll-loendist.

Pöörake tähelepanelikult komponente, mis on põhimõtteliselt üherealised TMemos—asjad nagu TDBLookupCombo. Windowsi mitmerealine redigeerimise juhtelement näitab alati ainult terveid tekstireale - kui juhtelement on selle fondi jaoks liiga lühike, a TMemo ei näita üldse midagi (a TEdit näitab lõigatud teksti). Selliste komponentide jaoks on parem muuta need paar pikslit liiga suureks, kui olla üks piksel liiga väike ega näidata üldse teksti.

Pidage meeles, et kogu skaleerimine on võrdeline käitusaja ja kujundamisaja vahelise fondi kõrguse erinevusega, mitte piksli eraldusvõime või ekraani suurus. Pidage meeles ka seda, et vormi mastaapsuse korral muutub teie juhtelementide päritolu - te ei saa komponente suuremaks muuta, kui neid natuke üle liigutada.

Ankrud, joondamine ja piirangud: kolmanda osapoole VCL

Kui olete teada, milliseid probleeme tuleb Delphi vormide eri ekraanieraldustes skaleerimisel silmas pidada, olete mõne jaoks valmis kodeerimine.

Delphi versiooniga 4 või uuemaga töötamisel on kavandatud mitmed omadused, mis aitavad meil säilitada vormi juhtelementide ilmet ja paigutust.

Kasutage Joondage et viia juhtnupp vormi või paneeli üla-, vasak- või parempoolse ülaosaga paremale ja jätta see sinna alles, isegi kui seda kontrolliva vormi, paneeli või komponendi suurus muutub. Vanema suuruse muutmisel muutuvad ka joondatud juhtnupud nii, et need jätkavad vanema üla-, ala-, vasak- või parempoolset serva.

Kasutage Piirangud juhtimisseadme minimaalse ja maksimaalse laiuse ja kõrguse määramiseks. Kui Piirangud sisaldavad maksimaalseid või minimaalseid väärtusi, ei saa juhtelemendi suurust nende piirangute rikkumiseks muuta.

Kasutage Ankrud tagamaks, et juhtimisseade säilitab oma praeguse positsiooni oma vanema serva suhtes, isegi kui vanema suurust muudetakse. Kui selle vanema suurus on muudetud, hoiab juhtimisseade oma positsiooni servade suhtes, mille külge see on kinnitatud. Kui juhtnupp on ankurdatud selle vanema vastasservade külge, venitatakse see, kui selle vanema suurust muudetakse.

protseduur ScaleForm
(F: TForm; Ekraani laius, ekraani kõrgus: LongInt);
alustada
F. skaleeritud: = tõsi;
F.AutoScroll: = vale;
F. Positsioon: = poScreenCenter;
F.Font. Nimi: = 'Arial';
if (ekraan. Laius <> ekraanilaius) siis alustatakse
F.Kõrgus: =
LongInt (F.Height) * LongInt (ekraan. Kõrgus)
div ScreenHeight;
F.Laius: =
LongInt (F.Width) * LongInt (Screen. Laius)
div Ekraani laius;
F.ScaleBy (ekraan. Laius, ekraani laius);
lõpp;
lõpp;