Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TFrame in ein Form einbinden (https://www.delphipraxis.net/20998-tframe-ein-form-einbinden.html)

cBoB 26. Apr 2004 16:03


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:
procedure TForm1.FormCreate(Sender: TObject);
var fr1: TFrame2;
begin
fr1:=TFrame2.Create(Form1);
fr1.Parent:=Form1;
fr1.Top:=10;
fr1.Left:=165;
fr1.Show;
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?

Gruß und schönen guten Abend!
-c-

CalganX 26. Apr 2004 16:15

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:
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;
Chris

alcaeus 26. Apr 2004 16:20

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)

cBoB 27. Apr 2004 08:07

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-

CalganX 27. Apr 2004 08:39

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

LKutscher 27. Apr 2004 08:48

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?

cBoB 27. Apr 2004 10:20

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-

Delphi_Fanatic 27. Apr 2004 10:25

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).

jschade 27. Apr 2004 10:36

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:
uses frame1;
2.unter private dann:

Code:
private
DeinFrame1 := TDeinFrame;      //DeinFrame ist der Name deines Frames
3. der aufruf zur laufzeit, bei mir übern button:

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;

cBoB 27. Apr 2004 10:56

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 13:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz