Több dokumentum MDI-ablak Delphi, Delphi, Delphi komponens Delphi forrás

MDI-dokumentum több ablak Delphi

Ebben az esetben a program elindul, és azonnal létrehoz egy gyermek ablakot. By the way, még mindig nem írt sehova, hogy minden ablak akkor létre kell hozni, mert úgy tűnik, valahonnan. Van osztályok, megvan a szükséges változók a var részben, de soha nem láttam kód inicializálja ezeket a változókat, és lehetővé teszi számukra az esetekben az osztályok. A tény az, hogy a kérdőívek a lista automatikusan létrejön, és az inicializálási megtalálja a forráskód a projekt (Project menü | View Source (Project | Forrás megtekintése).

A bal oldali panel felsorolja az űrlapok automatikusan létrehozásra kerül (Auto-űrlapok létrehozásához (Avtosozdavaemye formában)). Kiemelés itt childForm (a gyermek ablak), és mozgassa a rendelkezésre álló formák (űrlapok elérhető) kattintva pedig a listákat formájában egy nyíllal
jobbra. Most a gyerek formában nem kerül automatikusan létrejön. Ez a művelet kézzel kell elvégezni.

Több dokumentum MDI-ablak Delphi, Delphi, Delphi komponens Delphi forrás

Cserélje ki a fő alakja a panelen, és húzza a felső szélét az ablak (align tulajdonság kell állítani aiTop). Most, a panel, meg a gombot, és adja meg a cím létrehozása (ábra. 9,15).

Ha megnyomja ezt a gombot, akkor manuálisan létrehozni egy ablakot. Ehhez írjuk be az alábbi kódot:

eljárás TMainForm.CreateButt # 111; nKattints (küldő: TObj ECT); kezdődik

ChildForm: = TChildForm.Create (tulajdonos); végén;

Itt szánunk változó ChildForm mutatót az újonnan létrehozott TChildForm.create ablakot. ChildForm változó deklarált modul a gyermek ablak alatt var:

Elindítja a programot és próbálja kattintson a Create gombra többször is. Be kell, hogy több gyermek ablakok, ábrán látható. 9.16.

De ha megpróbálja bezárni ezek közül bármelyik, csak majd megfagy. Becsukni az ablakot, akkor létre kell hozni egy kezelőt az esemény Onciose gyermek forma és írd bele:

eljárás TChildForm.FormClose (Sender: TObject; var Action: TCloseAction);

Itt a változó Action (művelet) beállítása caFree. Ezt a változót vezetünk az eseménykezelő, mint a második paraméter. Mi változik a műveletet az alapértelmezett kliens dokumentum több ablak caFree, ami a forma elpusztult. Mint látható, az alapértelmezett MDI-alkalmazás ablaka minimalizálódik.

Azonnal, hogy milyen más értékeket kaphat változó Action:

  • .. Canone - nem tesz semmit, azaz az ablak nem lesz lezárva;
  • caHide - elrejti az ablakot, de nem kell semmisíteni, és a memória nem lehet kiadni. Ez az alapértelmezett érték az SDI-up. Bezárásához, csak elrejteni, de nem pusztult el, így elég létrehozni csak egyszer, majd okozhatnak bármennyiszer;
  • caMinimize - nem zárja be, de csak, hogy minimalizálja az ablakot. Ez az érték alapértelmezés szerint a gyermek ablakok egy MDI-alkalmazásokat.

Most a kérelem készen áll.

Mint látható, az azonos típusú TForm ablakok, ami nagyon kényelmes, különböző típusú alkalmazásokat. De meg kell emlékezni, hogy TForm lehet dolgozni egy kicsit másképp, és ezt figyelembe veszi írásakor valós alkalmazások.

Végül úgy véljük, számos hasznos tulajdonságok és módszerek formák, példák, amelyeket már végre a fent említett programok.

  • ActiveMDichild - jelzi az aktív gyermek ablakot.
  • MDichiidCount - egy egész számát jelző gyermek ablakok.
  • MDichiidren - ezen a szolgáltatáson keresztül, akkor a hozzáférés minden gyermek ablakot.

Például, a második ablak alkalmazásával állíthatjuk elő MDichiidren [2]. Tegyük fel, hogy meg kell változtatni az aktív gyermek formában fejlécet. Honnan tudom, hogy

melyik legyen az aktív, ha több? Nagyon egyszerű. Hozzon létre egy gombot a fő formája és préselt, írjon:

eljárás TMainForm.ButtonlClick (Sender: TObject); kezdődik

ActiveMDIChild.Caption: = 'Aktív docherenee ablak';

Ebben a kódot, a képaláírás tulajdonsága az aktív forma. Ha nincs aktív gyermek formában (akkor történik, amikor a gyermek formák nem), akkor az ingatlan

ActiveMDIChild egyenlő nulla.

Nézzük próbálja megváltoztatni a címet az összes gyermek ablakok. Ehhez a ciklus elindításához 0 MDichiidcount és a változás minden fejlécet:

i: = 0 MDIChildCount-1 do MDichiidren.Caption: = 'Új cím';

Van néhány érdekes technikákat.

  • Arrangeicons - építeni ikonok minden gyermek ablakok.
  • Cascade -, hogy építsenek egy kaszkád minden gyermek ablakok.
  • Next - A következő gyermek ablakot.
  • Előző - korábbi gyermek ablakot.
  • Csempe - is épít gyermek ablakok, csak egy mozaik.

Megjegyezzük, hogy az MDI-ablak, amit nem jelennek meg. Ez önmagában jelenik meg a képernyőn, csak hívja a kivitelező, hogy hozzon létre egy új példányt. Miért? Nézd meg a látható tulajdonság a gyermek ablakot. Felhívjuk figyelmét, hogy ez még mindig igaz. Ha a tulajdonság igaz, akkor az ablak látható, és megjelenik a képernyőn, és ha megváltoztatjuk Formstyle ingatlan fsMDichild, a látható tulajdonság is automatikusan igaznak bizonyul.

Tekintsük ezt árnyalatot. Ha véletlenül az ablak egy gyerek, majd változott vissza fsNormal 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.

Segítség a projekt! Küld erről az oldalról: