![]() |
MDIForm nicht aktiv
Ich erzeuge aus einen fsNormal Fenster ein fsMDIForm Fenster. Sobald ich jetzt aber eine fsMDIChild gleichzeitig erzeugen will, erhalte ich die Fehlermeldung das meine MDIForm nicht aktiv sei. Auch das öffnen der MDIChild aus den Ereignissen onpaint, oncreate und onshow bringen das gleiche Ergebnis.Wer kann helfen?
Auch wenn TMainform automatisch erzeugt wird und diesen lediglich visible auf false stelle, erhalte ich das selbe Ergebnis. Mein Code:
Delphi-Quellcode:
mainform := TMainform.create(self); //fsMDIForm
mainform.show; schritt1 := TSchritt1.create(self); //fsMDIChild schritt1.show; titelfenster.visible := false; //fsNormal
Delphi-Quellcode:
mainform.visible := true;
mainform.show; schritt1 := TSchritt1.create(self); schritt1.show; titelfenster.visible := false; |
hmm,
ich bin jetzt nicht sicher aber du musst doch die Child in der Unit der MDIFrom tarten, nicht aus dem Hauptfenster heraus. Denn das MDIForm kann nicht aktiv sein wenn du dich gerade im Code des Hauptfensters befindest. Ich würde den schritt1 in die FormActivate des MDIForms legen.
|
Re: MDIForm nicht aktiv
das bringt immer noch das selbe problem mit sich. selbst beim onaktivate ereignis reagiert es nicht wie es soll.
|
hmm,
Liste der Anhänge anzeigen (Anzahl: 1)
also bei mir geht das.
Ein kleines Projekt die hauptform :
Delphi-Quellcode:
die MDIFORM
unit normalform1;
interface uses SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, mdiform; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.xfm} procedure TForm1.Button1Click(Sender: TObject); var f : TForm2; begin f := TForm2.Create(self); f.show; end; end.
Delphi-Quellcode:
und das child
unit mdiform;
interface uses SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, mdichild; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.xfm} procedure TForm2.Button1Click(Sender: TObject); var fchild : TForm3; begin fchild := TForm3.Create(self); fchild.show; end; end.
Delphi-Quellcode:
Das ganze Projekt hab ich mal angehängt, ist allerdings Kylix3 sollte aber als CLX Anwendugn gehen.
unit mdichild;
interface uses SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, QDialogs, QStdCtrls; type TForm3 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.xfm} end. geht ohne Probleme. EDIT: DAs Buttonevent von der MDIForm kann auch im onActivate der Form2 sein, das geht auch. |
Re: MDIForm nicht aktiv
Dein code gegenüber meinen nur einen unterschied. Der Anwender muß erst auf den Button clicken, damit das die MDIChild geladen wird. Das soll jedoch ohne zutun vom anwender funktionieren. Also MDIForm und MDIChild gleichzeitig öffnen ohne das der Anwender Hand anlegen muß.
|
Re: MDIForm nicht aktiv
hmm, so gehts aber auch, ist dasselbe in grün.
Delphi-Quellcode:
unit mdiform;
interface uses SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, mdichild; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.xfm} procedure TForm2.Button1Click(Sender: TObject); var fchild : TForm3; begin fchild := TForm3.Create(self); fchild.show; end; procedure TForm2.FormActivate(Sender: TObject); var fchild : TForm3; begin fchild := TForm3.Create(self); fchild.show; end; end. |
Re: MDIForm nicht aktiv
ähm hast du auch form2 auf fsMDIForm und form3 auf fsMDIChild gestellt. Obwohl ich deinen gesamten code genutz hab, funktionert der nicht.
(Dein ZIP Projekt funktionert nicht mit meinen Windoff Delphi) |
hmm,
natürlich hab ich das.
Du kannst ja einfach ein neues Proekt draus machen soviel Quellcode ist es ja nicht. den du abtippen musst. Irgendetwas machst du einfach falsch, scheinbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 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 by Thomas Breitkreuz