Suunniteltaessa lomakkeet sisään Delfoi, on usein hyödyllistä kirjoittaa koodi niin, että sovelluksesi (lomakkeet ja kaikki objektit) näyttää pääosin samalta näytön tarkkuudesta riippumatta.
Ensimmäinen asia, jonka haluat muistaa varhaisessa vaiheessa lomakkeen suunnitteluvaiheessa, onko sallitko lomakkeen skaalaamisen vai ei. Skaalaamatta jättämisen etuna on, että mikään ei muutu suorituksen aikana. Haitta puuttumattomuudesta on se Mikään ei muutu ajon aikana (lomakkeesi voi olla aivan liian pieni tai liian suuri luettavaksi joissain järjestelmissä, jos sitä ei skaalata).
Jos et aio mitoittaa lomaketta, aseta skaalattu väärään. Muussa tapauksessa aseta ominaisuudeksi True. Aseta myös Autoscroll väärin: päinvastoin tarkoittaisi lomakkeen kehyksen koon muuttamatta jättämistä ajon aikana, mikä ei näytä hyvältä, kun lomakkeen sisältö tehdä muuta kokoa.
Tärkeitä huomioita
Aseta lomakkeen kirjasin skaalautuvaksi TrueType-kirjasimeksi, kuten Arial. Vain Arial antaa sinulle fontin pikselin sisällä halutusta korkeudesta.Jos sovelluksessa käytetty fontti ei ole Asennettuna kohdetietokoneelle, Windows valitsee käytettäväksi vaihtoehtoisen kirjasimen samassa kirjasinperheessä sen sijaan.
Aseta lomake asento omaisuutta jollekin muulle kuin poDesigned, joka jättää lomakkeen, jolle jätit sen suunnitteluaikana. Tämä loppuu yleensä vasemmalle 1280x1024-näytössä - ja kokonaan 640x480-näytössä.
Älä kopioi lomakkeen hallintalaitteita - jätä vähintään 4 pikseliä säätimien väliin, jotta yhden pikselin muutos reunapaikoissa (skaalauksen vuoksi) ei näy päällekkäisinä säätiminä.
Yksirivisille tarroille, jotka ovat alLeft tai hyvä on kohdistettu, asetettu Automaattinen koonmääritys totta. Muussa tapauksessa aseta Automaattinen koonmääritys väärään.
Varmista, että tarrakomponentissa on tarpeeksi tyhjää tilaa, jotta fontin leveys voidaan muuttaa - tyhjä tila, joka on 25% nykyisen pituudesta jono näytön pituus on vähän liikaa, mutta turvallinen. Tarvitset vähintään 30% laajennustilaa merkkijonoille, jos aiot kääntää sovelluksesi muille kielille. Jos Automaattinen koonmääritys on väärä, varmista, että olet asettanut tarran leveyden oikein. Jos Automaattinen koonmääritys on totta, varmista, että etiketissä on tarpeeksi tilaa kasvaa yksinään.
Jätä monirivisissä, sanaan käärittyissä tarroissa ainakin yksi rivi tyhjää tilaa alareunaan. Tarvitset tämän ylivuodon havaitsemiseksi, kun teksti käärii eri tavalla, kun fontin leveys muuttuu skaalauksen myötä. Älä oleta, että koska käytät suuria fontteja, sinun ei tarvitse sallia tekstin ylivuotoa - jonkun muun suuret fontit voivat olla suurempia kuin sinun!
Ole varovainen projektin avaamisessa IDE: ssä eri tarkkuuksilla. Lomake on PixelsPerInch omaisuutta muutetaan heti, kun lomake avataan, ja se tallennetaan DFM: ään, jos tallennat projektin. Parasta on testata sovellus ajamalla sitä itsenäisesti ja muokkaamalla lomaketta vain yhdellä tarkkuudella. Muokkaaminen erottelutarkkuuksilla ja fonttikokoilla aiheuttaa komponenttipoikkeamia ja kokoongelmia. Varmista, että olet asettanut PixelsPerInch kaikille lomakkeillesi 120: een. Sen oletusarvo on 96, mikä aiheuttaa skaalausongelmia pienemmällä tarkkuudella.
Komponenttien kulkeutumisesta puhumatta, älä mittaa muotoa uudelleen useita kertoja, suunnitteluaikana tai runtime. Jokainen skaalaaminen tuo käyttöön pyöristysvirheet, jotka kertyvät erittäin nopeasti, koska koordinaatit ovat tiukasti kiinteitä. Koska murto-osat katkaistaan säätimen alkuperästä ja koosta kunkin peräkkäisen uudelleenarvioinnin yhteydessä, ohjaimet näyttävät hiipivät luoteeseen ja pienenevät. Jos haluat sallia käyttäjien muokata muotoa monta kertaa, aloita vasta ladatulla / luodulla lomakkeella ennen jokaista skaalaamista, jotta skaalausvirheet eivät kerry.
Yleensä lomakkeita ei tarvitse suunnitella millään tietyllä resoluutiolla, mutta on tärkeää tarkistaa ne ulkonäkö 640x480 suurilla ja pienillä kirjasimilla ja korkealla resoluutiolla pienillä ja suurilla kirjasimilla ennen julkaisua sovelluksesi. Tämän tulisi olla osa säännöllistä järjestelmän yhteensopivuuden testausluetteloa.
Kiinnitä erityistä huomiota kaikkiin komponentteihin, jotka ovat pääosin yksilinjaisia TMemos-asioita kuten TDBLookupCombo. Windowsin monirivinen muokkausohjaus näyttää aina vain kokonaiset tekstirivit - jos säätö on liian lyhyt fonttille, a TMemo ei näytä ollenkaan (a tMuokkaa näyttää leikatun tekstin). Tällaisille komponenteille on parempi tehdä niistä pari pikseliä liian suuria, kuin olla yhden pikselin liian pieniä eikä näyttää tekstiä ollenkaan.
Muista, että kaikki skaalaus ovat verrannollisia fontin korkeuden eroon ajon ja suunnitteluajan välillä, ei pikselin tarkkuus tai näytön koko. Muista myös, että hallintalaitteiden alkuperä muuttuu, kun lomake skaalataan - et voi kovin hyvin tehdä komponentteja suuremmiksi siirtämättä niitä myös vähän yli.
Ankkurit, kohdistus ja rajoitukset: Kolmannen osapuolen VCL
Kun tiedät, mitä asioita tulee pitää mielessä, kun skaalataan Delphin lomakkeita eri näytön tarkkuuksille, olet valmis joihinkin koodaus.
Kun työskentelet Delphi-version 4 tai uudemman kanssa, useita ominaisuuksia on suunniteltu auttamaan meitä ylläpitämään lomakkeen ulkoasua ja asettelua.
Käyttää Kohdistaa ohjaimen kohdistamiseksi lomakkeen tai paneelin yläosaan, vasempaan tai oikeaan osaan ja pitämään se siellä, vaikka ohjausta sisältävän lomakkeen, paneelin tai komponentin koko muuttuisi. Kun vanhemman kokoa muutetaan, myös kohdistetun säätimen koko muuttuu siten, että se jatkaa vanhemman ylä-, ala-, vasenta tai oikeaa reunaa.
Käyttää rajoitteet määrittääksesi hallintalaitteen vähimmäis- ja enimmäisleveyden ja -korkeuden. Kun Rajoitukset sisältävät enimmäis- tai vähimmäisarvot, säätimen kokoa ei voida muuttaa rajoittamaan näitä rajoituksia.
Käyttää ankkurit sen varmistamiseksi, että ohjain säilyttää nykyisen asemansa suhteessa emoyhtiön reunaan, vaikka emoyhtiön kokoa muutetaan. Kun vanhemman kokoa muutetaan, säädin pitää paikkansa suhteessa reunoihin, joihin se on kiinnitetty. Jos ohjain on kiinnitetty vanhemman vastakkaisille reunoille, ohjaus venyy, kun sen vanhemman kokoa muutetaan.
menettely ScaleForm
(F: TForm; Näytön leveys, näytön korkeus: LongInt);
alkaa
F.Skaalattu: = Totta;
F.AutoScroll: = Väärä;
F.Sijainti: = poScreenCenter;
F.Font. Nimi: = 'Arial';
if (Näyttö. Leveys <> näytön leveys) alkaa sitten
F.Korkeus: =
LongInt (F.Height) * LongInt (Näyttö. Korkeus)
div ScreenHeight;
F. Leveys: =
LongInt (F.Width) * LongInt (näyttö. Leveys)
div näytön leveys;
F.ScaleBy (näyttö. Leveys, näytön leveys);
end;
end;