Form in Panel anzeigen?

Rund um die LCL und andere Komponenten
Antworten
hitzi
Beiträge: 13
Registriert: Di 22. Jan 2008, 11:51

Form in Panel anzeigen?

Beitrag von hitzi »

Hallo,

eine Frage gleich vornweg ... gibt es ein TFrame in FPC? Da ich bis jetzt nichts dazu gefunden habe, versuche ich nun gerade eine Form in einem Panel anzuzeigen.
Dazu verwende ich folgenden Code:

Code: Alles auswählen

frmFileManager := TfrmFileManager.Create(Panel2);
frmFileManager.Parent := Panel2;
frmFileManager.Show;
frmFileManager.Left := 0;
frmFileManager.Top := 0;
Form wird angezeigt, nur leider kann ich außerhalb dieser im Panel befindlichen Form nichts mehr anklicken, es ist irgendwie so, als ob dieses neue Form modal angezeigt wird.

Wie kann ich also eine Form in einem Panel anzeigen, aber trotzdem auch noch das Hauptformular bedienbar lassen?

Vielen Dank schonmal
Hitzi


[EDIT] Das extra Formular ist ein Formular mit der Eigenschaft BorderStyle=bsNone falls das auch eine Rolle spielt.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nimm die SVN Version von Lazarus.

Und nein spielt in dem fall keine Rolle.

Ach und TFrame gibts (noch) nicht.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10925
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Wozu braucht man das eigentlich, eine Form in einem Panel?

hitzi
Beiträge: 13
Registriert: Di 22. Jan 2008, 11:51

Beitrag von hitzi »

Ok, ich probier mal die SVN Version.

@Theo:
Wie würdest du sonst ein Programm aufbauen, welches nur ein Formular haben soll, aber im Programm zwischen verschiedenen Funktionen/Bereichen, mit jeweils unterschiedlichen Controls, umgeschaltet werden kann. Ich nehm dazu gern auch ein Tabcontrol ohne die Tabs anzuzeigen, aber da wird so ein "doofer" Rand angezeigt, welcher nicht in das Gesamtkomzept der GUI passt. Außerdem hab ich in FPC es nicht geschafft die Tabs aus dem Code heraus zu wechseln. Unter Delphi funktioniert ein einfacher PageControl1.ActivePage := Page1 ... unter FPC passiert an dieser Stelle gar nichts. Noch nicht mal ein Fehler.
Noch besser kann die "Form in Panel" Methode (unter Delphi eben mit Frames) bei Anwendungen genutzt werden, die zum Beispiel eine frei definierte Anzahl von Servern überwachen. Dazu bekommt jeder Server eine Tabpage auf welche ein einmal erstelltes Frame immer wieder genutzt wurde.

PS: Hab grad noch ne andere Möglichkeit zum Einblenden von Formularen in Panels entdeckt:

Code: Alles auswählen

Panel2.DockSite:= true;
frmFileManager := TfrmFileManager.Create(self);
frmFileManager.Dock(Panel2, Panel2.ClientRect);
frmFileManager.Visible := true;
frmFileManager.Left := 0;
frmFileManager.Top := 0;
Hat aber das selbe Problem, wie die im ersten Beitrag genannte Methode.

Benutzeravatar
theo
Beiträge: 10925
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Hast du's mal mit TNotebook probiert?
Scheint auf den ersten Test zu funzen auf GTK.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ja ich kanns aber nicht leiden wenn man dann den Code von 10 verschiedenen Ansichten in einer Unit hat. Deshalb mach ich das so.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hitzi
Beiträge: 13
Registriert: Di 22. Jan 2008, 11:51

Beitrag von hitzi »

Die SVN Sache hab ich nicht erfolgreich erstellen können. Naja egal ... hab so nen Daily Snapshot genommen und siehe da, es funktioniert tatsächlich. Selbst das Tabcontrol lässt nun codegesteuert die Tabs wechseln. Fein :)

Antworten