TForm in TForm?
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
TForm in TForm?
Hi!
Ist es möglich eine Form in einer Form zu erzeugen?
Einfach eine Form zu erzeugen zur runtime und dann parent auf die andere Form zu setzen geht leider nicht.
Wie kann man das sonst machen, oder geht das gar nicht...
Gruß Teekeks
Ist es möglich eine Form in einer Form zu erzeugen?
Einfach eine Form zu erzeugen zur runtime und dann parent auf die andere Form zu setzen geht leider nicht.
Wie kann man das sonst machen, oder geht das gar nicht...
Gruß Teekeks
-
- Beiträge: 489
- Registriert: Sa 5. Apr 2008, 09:37
- OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
- CPU-Target: 32Bit /64 Bit
- Wohnort: Nähe Freiburg i.Br.
Re: TForm in TForm?
was geht denn da nicht?Teekeks hat geschrieben:Hi!
Ist es möglich eine Form in einer Form zu erzeugen?
Einfach eine Form zu erzeugen zur runtime und dann parent auf die andere Form zu setzen geht leider nicht.
Gruß Teekeks
Fehlermeldungen?
-
- Beiträge: 250
- Registriert: Di 16. Dez 2008, 20:13
- OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
- CPU-Target: 32/64Bit
Re: TForm in TForm?
Da zu gibts ja Frames.
mfg _X_
mfg _X_
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: TForm in TForm?
Hey Teekeks,
meinst Du etwas in der Art :
Am Anfang verblüffte mich Deine Frage etwas, da der o.a. Code auf Anhieb funktionierte.
Doch als ich eine 2.Form per drag and drop zusammenclickte, funktionierte alles erst, nachdem im Code ebenfalls visible := true; stand.
Das muss offenbar eingefügt werden, auch wenn im OI visible schon gesetzt ist.
Natürlich müssen die Form bounds passen (hier einfach per alclient), damit das 2.Fenster sichtbar ist.
Ich hoffe, dass Dir das ein wenig weiter hilft..
meinst Du etwas in der Art :
Code: Alles auswählen
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
vfo : tform;
bt : tbutton;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin If assigned(vfo) then
begin vfo.free;
vfo := nil;
exit;
end;
vfo := tform.create(self);
vfo.name := 'hallo';
vfo.parent := self.Panel1;
vfo.align := alclient;
vfo.Color := clyellow; //damit es auffällt
bt := tbutton.create(vfo{<--autom. destroy durch vfo});
bt.Parent := vfo;
bt.SetBounds(10,10,60,20);
bt.caption := 'drück mich';
vfo.visible := true; // <----- das scheint der Bringer zu sein !!!!
end;
Doch als ich eine 2.Form per drag and drop zusammenclickte, funktionierte alles erst, nachdem im Code ebenfalls visible := true; stand.
Das muss offenbar eingefügt werden, auch wenn im OI visible schon gesetzt ist.
Natürlich müssen die Form bounds passen (hier einfach per alclient), damit das 2.Fenster sichtbar ist.
Ich hoffe, dass Dir das ein wenig weiter hilft..
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: TForm in TForm?
Hmmm,
Naja, ich hätte ja gerne das ganze mit Rahmen (also Titelleiste mit Kreuz oben rechts etc.) also ganau wie ein normales Fenster.
Naja, ich hätte ja gerne das ganze mit Rahmen (also Titelleiste mit Kreuz oben rechts etc.) also ganau wie ein normales Fenster.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: TForm in TForm?
Stichwort: MDI. Aber wozu muss das Formular in deinem jetzigen Formular sein? Reicht es nicht modal oder gar non-modal als normaler Dialog?
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: TForm in TForm?
Na dann füg mal die folgenden Zeilen hinzu :Teekeks hat geschrieben:ich hätte ja gerne das ganze mit Rahmen (also Titelleiste mit Kreuz oben rechts etc.) also ganau wie ein normales Fenster.
Code: Alles auswählen
vfo.BorderIcons:= [bihelp,bisystemmenu,biminimize,bimaximize];
vfo.BorderStyle:= bssizeable;
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: TForm in TForm?
hmmm, ändert sich nichts... Könnte das an GTK2 liegen?
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: TForm in TForm?
Tja, damit habe ich leider keine Erfahrung.....Teekeks hat geschrieben: Könnte das an GTK2 liegen?

Trozdem : was genau ist der Fehler :
Kommt überhaupt nichts ?
Kommt eine Fehlermeldung (wenn ja, welche) ?
Kommt etwas Falsches ?
Kommt .... ?
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: TForm in TForm?
Diese Umsetzung von MDI existiert nur unter Win32 und QT. Und soweit ich das beurteilen kann ist es in beiden mehr oder weniger "deprecated" - selbst Microsoft (die diese Art des MDI mehr oder weniger geprägt haben) nutzt es nicht mehr. Eventuell solltest du deine Benutzeroberfläche nochmal überdenken - es gibt sicher schönere Möglichkeiten (siehe Firefox, MS Office, .... jede erdenkliche Anwendung
)

-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TForm in TForm?
Naja, MS Office und gute Benutzeroberfläche? Schonmal eine bestimmte Option, von der du nur weißt, dass es sie gibt, gesucht? Ich finde da nichts wieder ...Hitman hat geschrieben:Diese Umsetzung von MDI existiert nur unter Win32 und QT. Und soweit ich das beurteilen kann ist es in beiden mehr oder weniger "deprecated" - selbst Microsoft (die diese Art des MDI mehr oder weniger geprägt haben) nutzt es nicht mehr. Eventuell solltest du deine Benutzeroberfläche nochmal überdenken - es gibt sicher schönere Möglichkeiten (siehe Firefox, MS Office, .... jede erdenkliche Anwendung)
Ansonsten verwendet(e) Microsoft in MS Excel 2003 auch MDI. Ich hab mich zuerst immer gewundert, warum ich keine zwei Arbeitsmappen gleichzeitig anzeigen konnte ...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: TForm in TForm?
Wer hat was von "gut" gesagt? Außerdem ging es um MDI, nicht um die gesamte Benutzeroberfläche (wäre auch ziemlich irrelevant, wenn der OP nicht ausgerechnet eine eigene Office Suite schreiben will).Socke hat geschrieben:Naja, MS Office und gute Benutzeroberfläche? Schonmal eine bestimmte Option, von der du nur weißt, dass es sie gibt, gesucht? Ich finde da nichts wieder ...
MDI (=Multi Document Interface) ist ein Konzept; dieses Fenster-in-Fenster eine konkrete (aber wie gesagt veraltete, unangebrachte und so gut wie nicht portable) Implementierung.Socke hat geschrieben:Ansonsten verwendet(e) Microsoft in MS Excel 2003 auch MDI. Ich hab mich zuerst immer gewundert, warum ich keine zwei Arbeitsmappen gleichzeitig anzeigen konnte ...
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: TForm in TForm?
Hi!
Das ganze ist auch eigentlich kein momentanes Problem von mir, doch ich hatte das schon einmal gesehen und mich halt gefragt ob das den mit Lazarus möglich ist...
Das ganze ist auch eigentlich kein momentanes Problem von mir, doch ich hatte das schon einmal gesehen und mich halt gefragt ob das den mit Lazarus möglich ist...
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TForm in TForm?
Ich meine, dass mal am Anfang ausprobiert zu haben. Da hat es Einbandfrei geklappt. Da habe ich einfach nur das Parent vom From geändert. Da ja beide ein Kompatible Klasse als Vorfahren habe. Daher erstaunt es mich das es jetzt nicht mehr gehen soll.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 359
- Registriert: Mi 27. Mai 2009, 20:54
- OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
- CPU-Target: x86
- Wohnort: Cottbus
Re: TForm in TForm?
Nun ja, es geht in gewisser weise.
Die Form ist zwar da, es wird aber nicht mehr der Rahmen angezeigt, egal was ich mache...
Die Form ist zwar da, es wird aber nicht mehr der Rahmen angezeigt, egal was ich mache...