AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Übereinanderliegende Panels im Formulardesigner

Ein Thema von idefix2 · begonnen am 13. Mär 2012 · letzter Beitrag vom 14. Mär 2012
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Übereinanderliegende Panels im Formulardesigner

  Alt 13. Mär 2012, 18:15
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.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 13. Mär 2012, 18:21
Hallo,

ich nehm da immer ein pagecontrol und blende mit
Delphi-Quellcode:
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;
alle Tab-Reiter aus.

Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 13. Mär 2012, 18:57
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.
$2B or not $2B
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 13. Mär 2012, 23:23
Danke, das ist eine sehr gute Lösung. Ich wusste nicht, das man bei einem Pagecontrol die Tabreiter ganz einfach ausblenden kann.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 13. Mär 2012, 23:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 14. Mär 2012, 00:05
Ich geb's zu, ich hab früher auch TNotebook verwendet, aber davon ist abzuraten, da dessen Komponentenverwaltung eher grauenhaft ist.

http://www.delphipraxis.net/138334-t...gecontrol.html

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.
$2B or not $2B
  Mit Zitat antworten Zitat
mz23
(Gast)

n/a Beiträge
 
#7

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 14. Mär 2012, 07:56
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.
Ich würde nur ein Panel verwenden. Dann einen

Delphi-Quellcode:

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;
Schöne Grüße aus Nürnberg,
Manfred

Geändert von mz23 (14. Mär 2012 um 07:59 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: Übereinanderliegende Panels im Formulardesigner

  Alt 14. Mär 2012, 08:16
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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