Delphi - Form átméretezése futási időben

forráskód letöltése
Előre nem tudhatjuk, hogy a felhasználó az alkalmazásunkat milyen felbontású monitoron fogja használni. Ha készítünk egy programot, melyben a Form-ok 640 x 480-as méretre vannak optimalizálva, de a felhasználó ennél nagyobb felbontás mellett futtatja a programot, akkor a képernyő nagy területe kihasználatlan marad.

Ez a probléma fordított esetben is igaz. Ha program 800 x 600-ra lett optimalizálva, de a felhasználó kisebb felbontáson használja, akkor az ablakok nagy része nem látható, vagy állandóan görgetni kell a tartalmát.

Ennek megoldására lehetőségünk van a futási időben egyszerűen átméretezni a Form-on lévő összes objektumot egyetlen lépésben és tetszőleges mértékben. Előre nem tudhatjuk, hogy a felhasználó az alkalmazásunkat milyen felbontású monitoron fogja használni. Ha készítünk egy programot, melyben a Form-ok 640 x 480-as méretre vannak optimalizálva, de a felhasználó ennél nagyobb felbontás mellett futtatja a programot, akkor a képernyő nagy területe kihasználatlan marad.

Ez a probléma fordított esetben is igaz. Ha program 800 x 600-ra lett optimalizálva, de a felhasználó kisebb felbontáson használja, akkor az ablakok nagy része nem látható, vagy állandóan görgetni kell a tartalmát.

Ennek megoldására lehetőségünk van a futási időben egyszerűen átméretezni a Form-on lévő összes objektumot egyetlen lépésben és tetszőleges mértékben.



Ehhez a ScaleBy eljárást használhatjuk. Ez két egész számot vár. A két számot elosztva egymással kapja azt a viszonyszámot mellyel a méretezést elvégzi, ha ez a szám kisebb egynél akkor kicsinyítés, ha nagyobb egynél, akkor pedig nagyítás jön létre.

Miért is van szükség két szám megadására, miért nem lehetne egyetlen számot átadni?
Két számot egymással elosztva lehet, hogy végtelen törtet kapnánk. Ha ezt adnánk át paraméterként, akkor a tört kerekítése miatt nem tudnánk megfordítani azt, vagyis az eredeti állapotot visszaállítani szükség esetén. Két egész használata esetén viszont nincs ilyen probléma.