Az ablakok inicializálása delphi, delphi, delphi komponensekben, delphi forrásokban
Lista 9.1. A projekt forráskódja:
MainUnit a 'MainUnit.pas1; kezdődik
Application.Initialize; Application.CreateForm (TFormi, Forml); Application.Run; végén.
Mindez nem más, mint a SplashProject.dpr fájl tartalma. Az első sor a SplashProject programprogram neve. Ebben a sorban semmi sem módosítható, mert a fájlnévnek meg kell egyeznie az itt írt programnevekkel. Ezt követően már van egy ismerős részszakasz, amelyben a szükséges modulok csatlakoztathatók. Formanyomtatványainkat (lehetővé tesszük az űrlapokkal történő munkát) és a MainUnit (a főablak modulja). Ha több ablak van a programban, akkor mindegyiket automatikusan regisztráljuk itt a felhasználások szakaszban, mert ez a fájl leírja az ablakok inicializálását, és tudnia kell a program összes ablakának létezéséről. Ha egy ablak nem kerül automatikusan inicializálásra, akkor csak ebben az esetben távolíthatja el az ablak modulját a felhasználási kapcsolatról, ellenkező esetben hiba fordulhat elő a fordítás során.
Három sor van a kezdet és a vég között.
Application.initialize - elindítja az alkalmazás inicializálását. A tisztítás nem ajánlott.
Application.CreateForm (TForm1, Form1) - a CreateForm módszer inicializálja az űrlapot. Két paramétere van: az objektum neve és a változó neve, amely később a létrehozott objektumra mutat. Esetünkben ez a TForm1 formanyomtatvány neve és az Form1 változó neve. Az Form1 változó automatikusan leírható a TForm1 objektum moduljában (esetünkben modulként szerepel)
MainUnit .pas) a var:
Application.Run - minden formanyomtatvány inicializálása után futtathatja a program végrehajtását az Application objektum futtatásának HELP paranccsal.
Alkalmazásobjektumot használnak mindenhol. Ez az objektum mindig létezik a programokban egy példányban, és az Application.initialize vonalon hozható létre. Ezzel az objektummal fokozatosan megismerjük a könyvet, és most már elég, ha tudjuk, hogy a TAppiication osztályból származik, és végrehajtja az alkalmazáskezelés alapfunkcióit.
Most hozzon létre egy új űrlapot a File | Új | Form. és mentse el spiashunit.pas. Ismét nézzük meg a projekt forráskódját, legyen az a 9.2.
program SplashProject; felhasználások
MainUnit a 'MainUnit.pas', SplashUnit a 'SplashUnit.pas 1;
Application.Initialize; Application.CreateForm (TForml, Forml); Application.CreateForm (TForm2, Form2); Application.Run; végén.
Most adja meg a projekt tulajdonságait (a Project menüben válassza az Option opciót). Az Űrlapok lapon két űrlap szerepel az Automatikus létrehozás űrlapok listájában. Válassza a 2. formanyomtatványt (ez a második űrlap, amelyet most készítettünk), és helyezzük át az Elérhető űrlapok listára. Zárja be a tulajdonságablakot az OK gombbal, és nézze meg a projekt forráskódját. Előfordulhat, hogy a második űrlap inicializáló karakterlánc eltűnt. Ez azért van, mert áthelyeztük az automatikusan létrehozott űrlapok listájáról a rendelkezésre álló űrlapok listájára. Vagyis a formanyomtatványunk a projektben elérhető, de nem jön létre automatikusan a program indításakor. Tehát az Form2 használatához meg kell először létrehoznunk.
Ahhoz, hogy továbbra is kényelmesebb legyen a munkához, nevezze át a FormForm fő formáját a MainForm-ban, és a Form2 2. formáját a spiashForm-ban. Tehát nem fogunk összezavarni, ahol a fő forma, és ahol a forma-takarító. Telepítse a gombot a fő űrlapon, és írja be a következő kódot:
eljárás TMainForm.ButtonlClick (Feladó: TObj ect); kezdődik
Itt a kód első sorában inicializáljuk a SplashForm űrlapot. A második - megjelenik a létrehozott ablak. És az utolsó sorban az Ablak megsemmisül a Szabad módszerrel.
De van még egy lehetőség az ablakok létrehozására, amelyeket már használtak, és ez előnyös. Írja be a következő kódot:
eljárás TMainForm.ButtonlClick (Feladó: TObject);
SplashForm: = TSplashForm. Létrehoz (Tulajdonos);
Itt a SplashForm változó a TSpiashForm objektum létrehozásának módját hívja meg. Ennek a módszernek csak egy paramétert kell átvinnie - az ablak tulajdonosa. Ha a tulajdonos nem, akkor átadhatja a nulla értéket (a nulla azt jelenti, hogy a tulajdonos nem létezik). Esetünkben a Tulajdonos tulajdonság átkerül, amelyben az aktuális ablak mutatója tárolódik. Ha a főablak nem lehet az aktuális ablak, meg kell adnia az objektum nevét - az 1. formanyomtatványt.
Tegyük a SplashForm ablakot a program betöltésekor. Hasonló ablakok láthatók, amikor olyan programokat indít el, mint a Delphj. Szó. Excel és egyéb alkalmazások. Ehhez menjen a projekt forráskódjába, és javítsa ki úgy, hogy megfeleljen a 9.3 listában szereplő kódnak.
Alkalmazás. CreateForm (TMainForm, MainForm);
Vegye figyelembe ezt a kódot soronként.
- A spiashForm ablak létrejön. Ez az ablak nem lesz tulajdonos, mert még a főablak létrehozása előtt is megjelenik. Ezért a létrehozási módszer paramétereként megadjuk a nulla értéket.
- Az ablakot a képernyőn nem modális módon jelenítjük meg, így az ablak megjelenik, és az alkalmazás továbbra is működik.
- Vigye át az ablakot a Repaint módszerrel.
- Az alkalmazás inicializálása.
- A TMainForm fő formája létrejön.
- Késleltetünk, hogy a SpiashForm ablaka legalább "lógjon" a képernyőn. Ehhez az alvási rutint használjuk, és a paraméter megadja a késleltetési időt milliszekundumban. Egy másodperc 1000 milliszekundum. Ha ezt a funkciót használja a felhasználások szakaszban, akkor hozzá kell adnia egy modult
- Windows-t.
- Húzza el a SpiashForm űrlapot a Hide módszerrel.
- Elpusztítjuk az ablakot.
- Futtassa az alkalmazást.
Futtassa a programot, és először megjelenik a SpiashForm ablak (a TLabel szövege a "Betöltés" -ra van ráhelyezve), majd megjelenik a főablak.
TIP. Amikor létrejön az ablak (CreateForm), a program végrehajtja az összes generált formanyomtatvány létrejött eseménykezelőit. Ha az alkalmazás túl nagy, és az ilyen kezelők műveletei sokáig végrehajtásra kerülnek, célszerű a műveletek előrehaladásával kapcsolatos információkat bemutatni a SpiashForm ablakban. Ebben az esetben az első dolog, hogy létrehozza ezt az ablakot, és megjelenik a képernyőn. A felhasználó látja, hogy van letöltés, és várja, hogy befejezze.
Amikor az űrlapot inicializálják, akkor a konstruktor ezen a ponton hívódik meg. Ha 20 formája van a projektben, és mindegyik tervezõ hosszú távú mûveleteket hajt végre, akkor az az érzés, hogy a program befagyott. Szükséges vagy a kód optimalizálása a programterhelés sebességének növelése érdekében, vagy tájékoztassa a felhasználót arról, hogy a program nem lóg, de betölti.
Ha nem tájékoztat a letöltés folyamatáról, és semmi sem jelenik meg a képernyőn, a felhasználó úgy gondolja, hogy a program letette a telefont, és megpróbálja újraindítani. Ez viszont az egész számítási folyamat összeomlásához vezethet. Például megpróbál futtatni két programot, amely a COM porttal működik. Ebben az esetben a második példány nem tudja megnyitni a portot (a COM port csak egyszer nyitható meg). Ezért jobb, ha új ablakot hoz létre, amely megmutatja a letöltés előrehaladását, mint hallgatni a felhasználók elégedetlenségét a program munkájáról.
Hogyan növelhetem a letöltési sebességet? Azonnal a következő opciókat javasoljuk.
Inicializálja csak az alapformákat. Nagyon jó ötlet. Nincs szükség 150 formanyomtatvány inicializálására, ha legfeljebb 10-et fognak használni, a többi pedig, ha és ha hívják, nagyon ritka. Ez a felesleges időveszteség a rendszerindítási és memóriaköltségek során a működés során. Hagyja, hogy automatikusan létrehozza a szükséges űrlapokat. Végezze el az Onshow eseménykezelő összes műveletét. A logikus megoldás, mert amikor az inicializálás formáját nevezzük a tervező és eseménykezelő onCreate, így ha ezek a módszerek gyorsan elvégezhető, és töltse le a programot, hogy gyorsítsa fel. De ha áthelyezi a kódot az onshow eseménykezelőre, az ablak megjelenítése és késleltetése késleltetésre kerül. Kitalálhatja és megnézheti az Onshow-ot, ha az inicializálás már megtörtént, majd hagyja ki ezt a kódot, és csak az ablakot jelenítse meg.
A második változat nem rossz, de ne felejtsük el, hogy az MDI-ablakok láthatók azonnal, így ha AutoCreate listán, akkor a rendszer indulásakor az ilyen ablakok elnevezésű program, mint a kivitelező, és a kijelzőn, azaz a. E. és felvezető OnShow.
Formstyle az fsMDichild-on, akkor a látható tulajdonság automatikusan is igaz lesz.
Fontolja meg ezt az árnyalatot. Ha véletlenül az ablak egy gyerek, majd változott vissza fsNormai elindítását követően az ablak azonnal megjelenik a képernyőn (ha az űrlap automatikusan létrejön a lista), mert a látható tulajdonság egyenlő marad az igazság.