![]() |
Übereinanderliegende Panels im Formulardesigner
Hallo,
ich möchte nicht wegen jeder möglichen Eingabe ein neues Fenster aufmachen. Wa sich nach meinem Dafürhalten sehr gut macht, sind mehrere übereinanderliegende Panels, von denen immer das gerade Relevante visible gesetzt wird. Funktioniert zur Laufzeit wunderbar, aber treibt mich im Formulardesigner zum Wahnsinn, weil die verschiedenen Controls dann übereinander liegen, alle mehr oder weniger sichtbar, und man sich überhaupt nicht auskennt. Habt ihr Vorschläge, wie man das lösen könnte? Gibt es eine Möglichkeit, zur Design-Zeit Panels ein- und auszublenden? Ich habe schon daran gedacht, das Formular so gross zu machen, dass die Panels nebeneinander Platz haben, und erst zur Laufzeit die Formulargrösse und die Position der Panels so zu setzen, wie sie gehören, aber das ist auch eher mühsam, und vor allem bei jeder Änderung fehleranfällig. |
AW: Übereinanderliegende Panels im Formulardesigner
Hallo,
ich nehm da immer ein pagecontrol und blende mit
Delphi-Quellcode:
alle Tab-Reiter aus.
Procedure Proc_PagecontrolAlleReiterAusBlenden(Pagecontrol:Tpagecontrol);
Var I:integer; begin for i:=0 to PageControl.PageCount-1 do PageControl.Pages[i].TabVisible:=false; PageControl.ActivePageIndex := 0; end; Gruß Frank |
AW: Übereinanderliegende Panels im Formulardesigner
Damit es zur Designzeit genauso aussieht, wie zur Laufzeit, würde ich die Taps gleich im OI abstellen.
Umblättern kann man ja dennoch, über das Kontextmenü oder über den OI. |
AW: Übereinanderliegende Panels im Formulardesigner
Danke, das ist eine sehr gute Lösung. Ich wusste nicht, das man bei einem Pagecontrol die Tabreiter ganz einfach ausblenden kann.
|
AW: Übereinanderliegende Panels im Formulardesigner
Ist zwar veraltete Technik und, auch wenn ich selbst es schon lange nicht mehr genutzt habe, konnte mir bisher keiner einen guten Grund nennen wieso TNotbook nicht für so was aus der Versenkung geholt werden darf.
|
AW: Übereinanderliegende Panels im Formulardesigner
Ich geb's zu, ich hab früher auch TNotebook verwendet, aber davon ist abzuraten, da dessen Komponentenverwaltung eher grauenhaft ist.
![]() PS: Wenn sowas wie "Abwärtskompatibilität" in der Beschreibung auftaucht, sollte man sich besser einen aktuelleren Weg raussuchen, denn es gibt bestimmt einen Grund, warum es das "eigentlich" nicht mehr gibt. |
AW: Übereinanderliegende Panels im Formulardesigner
Zitat:
Delphi-Quellcode:
Schöne Grüße aus Nürnberg,const maxPanels = 2; {your choice here} type TmyPanels = record ... myCaptions : array[0..maxPanels-1] of string[128]; myActiveCaption : byte; ... end; {record} var myPanels : TmyPanels; const myPanelsSize = SizeOf(myPanels); procedure TForm1.FormCreate(... begin ... with myPanels do begin myCaptions[0]:='...'; ... myCaptions[maxPanels-1]:='...'; myActiveCaption:=0; ... Panel1.Caption:=myCaptions[myActiveCaption]; end; {with} ... end; Manfred |
AW: Übereinanderliegende Panels im Formulardesigner
Die Pagecontrol-Variante hat diverse direkt nutzbare Vorteile, beispielsweise kann man damit einen Wizzard sehr einfach umsetzen.
Ich verwende die Pagecontrols gerne, um einen komplexen Setup-Dialog zu implementieren: Links die Baumansicht der Setupkategorien und rechts für jeden Baumknoten die entsprechende Seite. Entweder hinterlege ich im Tag des Baumknotens den Pageindex oder gleich einen Verweis auf die Seite. Im OnChange-Event der Treeview kann ich dann die entsprechende Seite mit einem Einzeiler darstellen. Mittlerweile tendiere ich jedoch zur Verwendung von Frames. Hat irgendwie mehr mit OOP zu tun und SRP und so. Anstatt alle Controls auf verschiedene Seiten eines Pagecontrols in ein einziges Formular zu packen (und damit das Formular völlig zu überladen), erstelle ich mir lauter kleine Frames und instantiiere sie zur Laufzeit (oder pack sie trotzdem auf ein Pagecontrol). Vermutlich ist ein Mittelding eine sehr gute Lösung: Ein Pagencontrol mit Seiten für jedes 'Panel' und pro 'Panel' ein eigenes Frame. Dann hat man im eigentlichen Dialog ein kompaktes Framework für einen 'Wizzard' oder 'komplexen Setup-Dialog', den man sehr leicht erweitern und wiederverwenden kann. Die Dialoge scheren sich ja nicht bzw. kaum um den konkreten Inhalt der einzelnen Datenframes. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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