Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MDI Child zur laufzeit erzeugen ? (https://www.delphipraxis.net/26219-mdi-child-zur-laufzeit-erzeugen.html)

Pseudemys Nelsoni 20. Jul 2004 14:21


MDI Child zur laufzeit erzeugen ?
 
hi,

wie kann ich ein MDI-Forumular zur laufzeit erzeugen UND direkt nachdem start meines programms anzeigen lassen?

wenn ich es so versuche:

Delphi-Quellcode:
procedure CreateStatusWnd;
var
  form: TForm;
begin
  form.Create(nil);
  form.FormStyle := fsMDIChild;
  form.Parent := Form1;
  form.WindowState := wsMaximized;
  form.Show;
end;
kann ich es in KEINEM event (oncreate, onactivate, onshow) aufrufen....immer fehler wie "MDIMainForm" nicht aktiv usw...

hat da jemand eine lösung?

Muetze1 20. Jul 2004 14:32

Re: MDI Child zur laufzeit erzeugen ?
 
Moin!

Ist denn auch eine Form aktiv zu dem Zeitpunkt mit der FormStyle fsMDIForm ? Du musst ja eine Hauptform haben damit du deren Kinder erstellen kannst...

MfG
Muetze1

Pseudemys Nelsoni 20. Jul 2004 14:38

Re: MDI Child zur laufzeit erzeugen ?
 
jo klar, Form1 ist ist das MDI Hauptfenster

Stevie 20. Jul 2004 14:43

Re: MDI Child zur laufzeit erzeugen ?
 
Ist es auch das Hauptfenster der Applikation?

Pseudemys Nelsoni 20. Jul 2004 15:19

Re: MDI Child zur laufzeit erzeugen ?
 
ja...........................

bigg 20. Jul 2004 15:28

Re: MDI Child zur laufzeit erzeugen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi,

warum erstellst du dir keine Klasse alias TChild.
Die Klasse kannst du dann im Hauptformular erstellen.
Ich habe dazu ein Beispiel erstellt.

Guck dir dazu auch die *.dpr an, denn da wird die Klasse
nicht automatisch beim Starten deines Programms erstellt.

Pseudemys Nelsoni 20. Jul 2004 18:23

Re: MDI Child zur laufzeit erzeugen ?
 
hallo big, dein beispiel klappt perfekt! danke schonmal.

leider bekomm ich das irgendwie nicht in mein prog...

Mein erstes prob... ich habe ein MDIChild erstellt (designzeit), es heisst "Form3" und stammt von "TForm3" wie bennene ich das dann in "TChild" um? irgendwie gibt delphi mir fehler wenn ich den namen einfach so ändere.
Das zweite... wie hast du es gemacht das das zur designzeit erstelle fenster zur laufzeit nicht erscheint?
und das dritte... wieso haben alle neu erstellten childs die komponenten bereits da wo sie hinsollen, ich sehe nirgends das sie dort positioniert werden. ist das so weil das zur designzeit erstelle form bereits so aussieht?

bigg 20. Jul 2004 18:42

Re: MDI Child zur laufzeit erzeugen ?
 
hi,

ändere einfach den Namen im Formular von Form3 nach Child.
Deine Klasse heißt nun TChild. Aber nicht Tchild eingeben.

Ansonsten poste mal Code.

Muetze1 20. Jul 2004 19:28

Re: MDI Child zur laufzeit erzeugen ?
 
Moin!

2.: Projekt->Optionen->Formulare die Formulare von AutoCreate nach rechts bewegen.
3.: Hey, du hast das Wunder von Klassen entdeckt: einmal schreiben und x mal anlegen mit gleichem Verhalten, obwohl nur einmal Code geschrieben wurde. Die Klasse TChild legt aussehen und Verhalten fest - und das kannst du dir dann so oft anlegen bzw nutzen wie du willst.

MfG
Muetze1

Pseudemys Nelsoni 20. Jul 2004 21:44

Re: MDI Child zur laufzeit erzeugen ?
 
hallo an alle und danke 8)

Zitat:

Hey, du hast das Wunder von Klassen entdeckt: einmal schreiben und x mal anlegen mit gleichem Verhalten, obwohl nur einmal Code geschrieben wurde. Die Klasse TChild legt aussehen und Verhalten fest - und das kannst du dir dann so oft anlegen bzw nutzen wie du willst.
eigentlich weiss ich schon wie klassen funktionieren, nur ich sehe in der TChild unit keine definition der postion der komponenten wo steht die?

Muetze1 21. Jul 2004 00:41

Re: MDI Child zur laufzeit erzeugen ?
 
Moin!

Zitat:

Zitat von Pseudemys Nelsoni
hallo an alle und danke 8)

Zitat:

Hey, du hast das Wunder von Klassen entdeckt: einmal schreiben und x mal anlegen mit gleichem Verhalten, obwohl nur einmal Code geschrieben wurde. Die Klasse TChild legt aussehen und Verhalten fest - und das kannst du dir dann so oft anlegen bzw nutzen wie du willst.
eigentlich weiss ich schon wie klassen funktionieren, nur ich sehe in der TChild unit keine definition der postion der komponenten wo steht die?

Der Kommentar sollte auch eher scherzhaft sein - und ich muss dazu gestehen, das ich mir den Code nicht angeschaut habe. Das werde ich gleich nochmal nachholen...

/EDIT:

Ok, nachgeholt. In dem Quellcode sind doch wie auch in der DFM die Komponenten ordentlich angelegt:
Code:
type
  TChild = class(TForm)
    RadioButton1: TRadioButton; // <-- ein RadioButton
    Button1: TButton;           // <-- ein Button
    Edit1: TEdit;               // <-- ein Edit
    ComboBox1: TComboBox;       // <-- eine ComboBox...
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
  public
  end;
MfG
Muetze1

Pseudemys Nelsoni 21. Jul 2004 09:27

Re: MDI Child zur laufzeit erzeugen ?
 
danke mütze, die DFM datei hab ich mir garnicht angeguckt :oops:

normal hab ich sowas immer in der .pas datei und setze die position zur laufzeit :)

Muetze1 21. Jul 2004 17:54

Re: MDI Child zur laufzeit erzeugen ?
 
Moin!

Zitat:

Zitat von Pseudemys Nelsoni
normal hab ich sowas immer in der .pas datei und setze die position zur laufzeit :)

Wie geschrieben: in der .PAS Datei sind die Komponenten auch vorhanden. Oben der von mir gepostete Source Code ist doch der Ausschnitt der PAS Datei mit der Deklaration der Komponenten...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz