![]() |
TFrame in ein Form einbinden
Hallo an alle!
Wiedermal ne wahrscheinlich blöde Frage: wie kann ich Frames in ein Formular einbinden (während der Laufzeit)? Ich komme irgendwie nicht an das schon fertig erstellete Frame heran. Ich kann zwar mit
Delphi-Quellcode:
ein neues Fram erstellen, welches auch in Form1 angezeigt wird - es ist aber eben nicht das schon zur Entwurfszeit erstellete und damit leeeer. Was mach ich noch falsch?
procedure TForm1.FormCreate(Sender: TObject);
var fr1: TFrame2; begin fr1:=TFrame2.Create(Form1); fr1.Parent:=Form1; fr1.Top:=10; fr1.Left:=165; fr1.Show; Gruß und schönen guten Abend! -c- |
Re: TFrame in ein Form einbinden
Hi,
was genau ist denn dein Problem? :gruebel: So wie es dort steht, ist es nämlich richtig. So wie ich dich verstanden habe willst du jetzt dein Frame füllen. Das würde dann über den dynamischen Weg gehen. Beispiel:
Delphi-Quellcode:
Chris
var
frmFrame: TFrame; // dein Frame lbLabel: TLabel; // ein Label; begin // Frame erstellen und Eigenschaften setzen lbLabel := TLabel.Create(frmFrame); lbLabel.Parent := frmFrame; lbLabel.Name := 'EinLabel'; lbLabel.AutoSize := true; lbLabel.Caption := 'Die Beschriftung'; lbLabel.Left := 10; lbLabel.Top := 10; lbLabel.Show; frmFrame.Show; end; |
Re: TFrame in ein Form einbinden
So wie ich das verstanden habe, will er ein schon (zur Entwurfszeit) gefülltes Frame auf dem Form anzeigen, und es nicht zur Laufzeit dynamisch füllen.
@cBoB: Bei mir ist es auf deinem Weg immer noch gegangen, wobei ich immer das Frame erstellt, hinzugefügt und dann erst das Form angezeigt habe. Das ist auf einem MainForm natürlich nicht so einfach möglich. Probier mal, das Frame in der OnCreate des Forms hinzuzufügen, aber Visible auf False setzen. Sobald du das Frame brauchst, setzt du Visible auf True. (Falls du das Frame von Anfang an brauchst, vergiss das mit dem Visible) |
Re: TFrame in ein Form einbinden
@Chakotay
Ja, wie das geht ist dann schon klar. Nur liegt eben das Problem, wie von alcaeus richtig erkannt, eben darin, ein schon fertig entworfenes Frame dann dynamisch einzubinden und das ohne, das es vorher ins Form eingebunden wurde und auf invisible gesetzt wurde. Es geht nämlich darum so nach und nach für verschiedene Arten von Zusammenstellungen Frames zum Programm hinzu zu fügen. @alcaeus Ja wie gesagt, hatte auch gedacht, dass es so geht. Muß wohl irgendwo noch ein Fehler liegen. Es sollte auch ohne daß ich das Frame schon ins Form einbinde und nur unsichtbar mache gehen. Danke -c- |
Re: TFrame in ein Form einbinden
Hi,
sicherlich hast du dein Frame über Neu -> Frame ein Frame erstellt. Das kannst du nun anzeigen lassen zur Designtime, indem du in der Komponentenleiste ganz rechts unter Standard "Frame" auswählst. Dann nimmst du dein Frame aus der Liste, welche erscheint und schon ist dein Frame zur Designtime drin. ;) Chris |
Re: TFrame in ein Form einbinden
Ich hab' gerade 'mal schnell ein Frame erstellt und in ein neues Formular eingebunden (im OnCreate) - funktioniert alles prima. Das Frame wird genau so angezeigt, wie ich es gespeichert habe. Ich habe nur Form1 durch "self" ersetzt - dann ist man unabhängig vom Namen der Formularvariablen. Bist du sicher, dass das Problem nicht vielleicht im constructor deines Frame liegt?
|
Re: TFrame in ein Form einbinden
@all:
SORRY! Ich war leider zu dämlich! Das Progrämmchen hat schon alles gemacht, ich habs nur falsch interpretiert. Hatte nämlich auf dem Frame lediglich ein Panel um die Ränder sichtbar zu machen, bei dem ich am Align rumgespielt hab. Dabei habe ich das erst auf alClient und dann wieder auf alNone gestellt. Zur Entwurfszeit blieb das Panel ja sichtbar, muß wohl aber zur Laufzeit dann doch hinter den äußeren Grenzen verschwunden sein. Ob das normal ist bzw. es dafür ein Erklärung gibt? Danke -c- |
Re: TFrame in ein Form einbinden
(Frame mit der rechten Maus-taste anklicken und in dem Kontext-menü, das dann erscheint, auf "Zur Palette hinzufügen" klicken).
|
Re: TFrame in ein Form einbinden
hi,
1. also du musst unter uses in deiner form das frame(unitname unter dem du das frame gespeichert hast) angeben!
Code:
2.unter private dann:
uses frame1;
Code:
3. der aufruf zur laufzeit, bei mir übern button:
private
DeinFrame1 := TDeinFrame; //DeinFrame ist der Name deines Frames
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin if not assigned(DeinFrame1)then begin DeinFrame1 := TDeinFrame.Create(Panel1); //PanelIndex bestimmt,wo in deiner Form das Frame in // deiner Form erscheinen soll (Panel1 muss vorher in // die Form eingefügt werden) DeinFrame1.Parent := Panel1; end; DeinFrame1.BringToFront; end; |
Re: TFrame in ein Form einbinden
@jschade
Joa, sieht auch nicht schlecht aus - aber wie gesagt, s war n Problem, das eigentlich gar keins war, ich hatte mich nur zu blöd angestellt, es zu sehen. Aber trotzdem danke! -c- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 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