"Cannot focus a disabled or invisible window"
-
Diese Fehlermeldung kommt, wenn ich so:
void __fastcall TForm1::Button2Click(TObject *Sender) { TForm *Form = new TForm(Form1); Form->Visible = 1; Form->Enabled = 1; Form->Parent = Form1; Form->FormStyle = fsMDIChild; Form->Show(); }
2 MDIFormen erstelle und von der einen Form den Focus auf die andere ändere ... oder die eine schließe ...
Ich habe was davon gelesen, dass wenn man eine MDIForm schließt, sie minimiert wird - was bei mir auch der Fall war. Das bekommt man jedoch so weg:
void __fastcall TMDIForm::FormClose(TObject *Sender, TCloseAction &Action) { Action = caFree; }
Muss man sowas auch für den Focus oder sowas abändern?
Liebe Grüße
-
hm ... der Fehler kommt wenn ich in meine erstellte Form ein TEdit reinpacke ... sonst nicht ...
void __fastcall TForm1::Button2Click(TObject *Sender){ [...] TEdit *Edit = new TEdit(Form); Edit->Parent = Form; Edit->Visible = 1; }
-
Hallo
Nein das hat mit dem Edit nichts zu tun sondern damit das du quasi Show() zweimal aufrufst, denn die Eigenschaft Visible führt auch Show/Hide aus
TForm *Form = new TForm(Form1); //Form->Visible = 1; hier falsch Form->Enabled = 1; Form->Parent = Form1; Form->FormStyle = fsMDIChild; Form->Show(); // Erst zum Schluß darstellen
bis bald
akari
-
es funktioniert auch so nicht:
void __fastcall TForm1::Button2Click(TObject *Sender) { TForm *Form = new TForm(Form1); Form->Parent = Form1; Form->FormStyle = fsMDIChild; TEdit *Edit = new TEdit(Form); Edit->Parent = Form; Form->Show(); }
-
Hallo,
Stell mal das "Form1" auf :
FormStyle = fsMDIForm;
Nash
-
Ich glaube nun den Fehler zu kennen.
Es hat indirket was mit
Form->FormStyle = fsMDIChild;
zu tun. Wenn ich eine Form mit dem Objektinspektor erstelle und die Eigenschaft setze und auch auf der Mainform
FormStyle = fsMDIForm;
setzte, funktioniert alles prima.
Wenn ich das ganze über Komponente erstellen mache, schlägt es fehl. Ich glaube, dass das daran liegt (wie es auch in der Hilfe steht), mann soll die FormStyle Eigenschaft nicht zu Laufzeit ändern.
Könnte das >der< Fehler sein?
LG
-
Ich habe auch ein Problem mit Setfocus.
Wenn ich meinen Dialog anzeigen lasse, dann möchte ich, dass mein Editfeld fokussiert wird.ShowModal(); Edit1->SetFocus();
Wenn dann Close(); aufgerufen wird, erhalte ich diese Fehlermeldung.
Ohne SetFocus() kommt diese Fehlermeldung nicht.
-
Wenn du wann Close() aufrufst?
Gib bitte den ganzen Code nochmal her.
-
Du machst es komplett falsch.
Lass dir vom Projekt Wizard mal eine MDI-Anwendung generieren und guck dir an wie das funktioniert.
Stichwort: child = new TMDIChild(Application).