Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Anfängerfragen - Eigenes Panel / Frame
j-a-n@gmx.de - Do 09.12.04 12:49
Titel: Anfängerfragen - Eigenes Panel / Frame
Ich komme eigendlich aus der Java-Ecke; meine Grössten Probleme habe ich mit der Objektorientiertung und der GUI.
Heute wieder eine GUI Frage.
In Java bin ich es gewohnt (gewesen), eigene Panels zu erstellen; also eine eigene Klasse von JPanel (TFrame) abzuleiten, im Konstruktor meine Steuerelemente zu plazieren und dieses Panel dann an mehreren Stellen verwenden. Das Gleiche möchte ich jetzt auch mit Delphi.
Ich habe geschafft:
Ich habe eine Klasse von TFrame abgeleitet und per Designer meine Komponenten plaziert. Auch habe ich eigene Methoden erstellt, mit dem ich die Inhalte des Frames schreibe und auslese.
Ich brauche noch:
Nun möchte ich mit dem Frame 2 Dinge tun. Erstmal möchte ein Form anzeigen, dass den Frame sowie einen OK und Abbrechen Button enthält. Frage: Wie kriege ich meinen Frame auf das Form? Ich möchte auch nicht unbedingt eine komplette Klasse dafür, sondern das ganze vielleicht dynamisch erstellen (?).
In einem anderen Frame habe ich schon viele andere Komponenten wie Tables, Toolbars, RichEdit, usw. Ich möchte nun, dass bei einer Aktion (Button klick o.ä.) das RichText verschwindet (schaffe ich über visible:=true;) und stattdessen mein Frame angezeigt wird.
BTW: Gibt es ein, in dem genau diese Themen angesprochen werden? Der Buchhändler meines Vertrauens hatte genau 2 Delphi-Bücher da und bei Amazon kann man ja so gut ins Inhaltsverzeichnis gucken.
st-matze - Do 09.12.04 13:01
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var MyFrame: TMyFrameClass; Form1: TForm;
imlpementation procedure TForm1.Button1Click(Sender: TObject); begin MyFrame := TMayFrameClass.Create(); MyFrame.Parent:=Form1; end; |
dann nicht vergessen die alignment oder größen parameter des Frames zu setzten, oder was du noch machen willst.
j-a-n@gmx.de - Do 09.12.04 13:30
Super, danke dir; klappt.
Zur Plazierung müsste ich doch jetzt Top, Left, Width und Height verwenden, also so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| form.Height:=500; form.Width:=500;
frame.Top := 0; frame.left := 0; frame.width := form.width -20; frame.height := form.Height -20; |
Nur irgendwie zeigt der trotzdem scrollbars an; das heisst, das Frame ist zu gross. Aber ich kann abziehen was ich will, das wird einfach nicht kleiner.
2. Wenn ich die Form vergrössere, wird das Frame nicht mit grösser. Im Designer hab ich das mit Anchors gelöst. Nur wie mache ich das jetzt im Code?
BTW: Kann es sein, dass die Hilfe nicht unbedingt ergiebig ist?
st-matze - Do 09.12.04 17:26
das mit den Scrollbars muss nicht an dem Frame liegen. Hast du eventuell noch andere elemente auf deiner Form die hinter dem frame liegen, die die scrollbars verursachen?
mit dan ankern kannst du ja auch so machen
Delphi-Quelltext
1: 2: 3:
| frame.Anchors:=[akLeft,akTop,akRight,akBottom]; frame.align:=alClient; |
Johannes Klos - Fr 10.12.04 22:24
Den Frame kannst du zur Laufzeit vergrößern indem du folgenden Code
Quelltext
1: 2: 3: 4:
| frame.Top := 0; frame.left := 0; frame.width := form.width -20; frame.height := form.Height -20; |
in der Funktion OnResize des Formulares aufrufst. Diese Funktion wird jedesmal aufgerufen wenn sich die Form-größe ändern.
Gruß
Johannes Klos
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!