![]() |
Frames Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Hi. Habe eben das erste Mal mit Frames gearbeitet und ich glaube ich habe schon wieder einen Fall erwischt, der nicht geht.
Das was ich vorhabe kann man auch mit MDI Forms lösen, will ich aber nicht. Zu den beiden Programmen die im Anhang sind: Das erste Programm funktioniert (Programm 1 im Anhang). Und zwar will ich das Frame dynamisch auf einer Form erzeugen (Align = alClient). Das mache ich so:
Delphi-Quellcode:
Wie schon erwähnt, das funktioniert auch.
procedure TFrmMain.Button1Click(Sender: TObject);
var MeineFrame : TMeineFrame; begin MeineFrame := TMeineFrame.Create(self); MeineFrame.Parent := FrmMain; end; Nun will ich das aber in meinem Projekt (Programm 2 im Anhang) einfügen und da funktioniert genau diese Vorgehensweise nicht. Der einzigste Unterschied ist, dass die Frame in einem anderen Fenster erzeugt wird (ist ein modales Fenster). Warum geht das nicht? Erzeugt wird die Frame, nur angezeigt wird sie nicht. |
Re: Frames Problem
viellcht solltest du in form2 beim anzeigen form1.meinframe oder so. Oder es liegt daran dass du sie immer neu erstellst oder willst du das auch^^
|
Re: Frames Problem
Zitat:
Will sie nicht immer neu erstellen (nur einmal). |
Re: Frames Problem
Hi,
wenn Du sowieso nur einmal erstellen willst, kannst Du den Frame doch direkt auf die Form legen und brauchst ihn nicht dynamisch zu erzeugen. [edit] Und, btw., Du öffnet in Deinem Beispiel kein modales Fenster. ;-) [/edit] [edit2] Falls Du es doch dynamisch machen willst, schreib anstatt:
Delphi-Quellcode:
das hier:
MeineFrame.Parent := FrmModalesFenster;
Delphi-Quellcode:
MeineFrame.Parent := Self;
|
Re: Frames Problem
Zitat:
|
Re: Frames Problem
Hi,
alles klar, ich hab die Lösung bereits in Edit im Post oben dran geschrieben :) |
Re: Frames Problem
Tatsächlich mit
Delphi-Quellcode:
gehts. Kannst du mir vielleicht noch erklären, was dabei der Unterschied ist?
MeineFrame.Parent := Self;
Vielen vielen Dank |
Re: Frames Problem
Klar, kann ich das.
Du erzeugst Dein Fenster hiermit:
Delphi-Quellcode:
Beachte, dass Du hier die Variable ModalesFenster deklarierst und damit das Fenster erstellst und aufrufst.
procedure TFrmMain.ModalesFensterffnen1Click(Sender: TObject);
var ModalesFenster : TFrmModalesFenster; begin ModalesFenster := TFrmModalesFenster.Create(self); ModalesFenster.Show; end; In Deinem modalen Fenster erzeugst Du damit Deinen Frame (das ist der alte Code!):
Delphi-Quellcode:
Du setzt den Parent auf FrmModalesFenster, welches aber, da Du oben eine eigene Variable definiert hast, gar nicht initialisiert ist.
procedure TFrmModalesFenster.btnAnzeigenClick(Sender: TObject);
var MeineFrame : TMeineFrame; begin MeineFrame := TMeineFrame.Create(self); MeineFrame.Parent := FrmModalesFenster; end; Das heißt, Du setzt den Parent auf eine nicht initialisierte Variable, demnach wird das Fenster nicht angezeigt. Um das Problem zu lösen, kannst Du entweder mit Self arbeiten, oder Du änderst den Code zum Erstellen des Fenster wie folgt ab:
Delphi-Quellcode:
So klappt es dann auch wieder.
procedure TFrmMain.ModalesFensterffnen1Click(Sender: TObject);
begin FrmModalesFenster := TFrmModalesFenster.Create(self); FrmModalesFenster.Show; end; |
Re: Frames Problem
Achsooo. Mist, da hätte ich selber drauf kommen müssen.
Nochmals vielen Dank. |
Re: Frames Problem
Kein Problem. ;-)
Ich würde übrigens die "Self"-Variante bevorzugen, erspart solche Unannehmlichkeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 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