![]() |
Ist meine TPageControl-Philosophie richtig?
Liste der Anhänge anzeigen (Anzahl: 2)
Noch ein paar Monate, dann bin ich schon zwei Jahre Delphi-Land. Aber ich bin mir immer noch unsicher, ob ich VCL-Oberflächen eigentlich richtig baue.
Ich möchte euch deshalb einmal eine sehr kleine Oberfläche (drei hastig zusammengeklickte Seiten) zeigen und wissen, was Ihr dazu meint.
Ja, es ist eine .zip zum Runterladen. Aber ich verspreche, es geht schnell :duck: Anhang 42286 |
AW: Ist meine TPageControl-Philosophie richtig?
Ich nutze auch sehr gerne das PageControl, um "Seiten" zu verwalten.
Ja, ich nutze gewiss das PageControl statt das Notebook. An sich finde ich deine Idee mit deiner GUI aus Frames und Forms ganz nett, aber das muss wohl sehr zeitaufwändig in der Pflege sein. Ich nutze bei solchen Sachen immer ein PageControl mit mehreren "Seiten", blende die Tabs aus und ersetze die durch eine ListBox. Keine Frames und nur eine Form. Jetzt noch schön die Funktionalität von der Oberfläche trennen und alles ist super. |
AW: Ist meine TPageControl-Philosophie richtig?
Ein paar Sachen fallen schon auf
Delphi-Quellcode:
kann man auch ganz einfach so schreiben
procedure TMainForm.bottomFramenextPageButtonClick(Sender: TObject);
begin if (mainPageControl.ActivePage = firstSheet) then begin topFrame.ProgressString := '2/3'; mainPageControl.ActivePage := secondSheet end else if (mainPageControl.ActivePage = secondSheet) then begin topFrame.ProgressString := '3/3'; mainPageControl.ActivePage := thirdSheet; end; end; procedure TMainForm.bottomFramepreviousPageButtonClick(Sender: TObject); begin if (mainPageControl.ActivePage = thirdSheet) then begin topFrame.ProgressString := '2/3'; mainPageControl.ActivePage := secondSheet end else if (mainPageControl.ActivePage = secondSheet) then begin topFrame.ProgressString := '1/3'; mainPageControl.ActivePage := firstSheet; end; end; procedure TMainForm.FormCreate(Sender: TObject); begin mainPageControl.ActivePage := firstSheet; topFrame.ProgressString := '1/3'; firstPageFrame.initGUI(); end;
Delphi-Quellcode:
Und schon wird es wurscht, wieviele Seiten dein PageControl hat.
procedure TMainForm.UpdateProgress;
begin topFrame.ProgressString := Format( '%d/%d',[ mainPageControl.TabIndex, mainPageControl.PageCount ] ); end; procedure TMainForm.mainPageControlChange( Sender : TObject ); begin UpdateProgress; end; procedure TMainForm.bottomFramenextPageButtonClick(Sender: TObject); begin if mainPageControl.TabIndex < mainPageControl.PageCount - 1 then mainPageControl.TabIndex := mainPageControl.TabIndex + 1; end; procedure TMainForm.bottomFramepreviousPageButtonClick(Sender: TObject); begin if mainPageControl.TabIndex > 0 then mainPageControl.TabIndex := mainPageControl.TabIndex - 1; end; procedure TMainForm.FormCreate(Sender: TObject); begin mainPageControl.ActivePage := firstSheet; firstPageFrame.initGUI(); UodateProgress; end; Und damit wären wir auch schon beim wieviel bzw. was. Wenn du hier stärker trennen würdest (Anzeige und Logik), dann wäre das wesentlich flexibler und auch einfacher in der Handhabung. In ein PageControl kann man so ziemlich alles eindocken. Formulare, Panels, ... Wenn man jetzt im Hintergrund ein Liste mit Instanzen hat und jedem Klassentyp eine bestimmtes Control (Form, Panel, etc.) zuordnet, dann kann man zu jedem Klassentyp das passende Control erzeugen, die Instanz zuweisen und in das PageControl eindocken. Und schon ist es völlig Wurscht, was dort angezeigt wird. |
AW: Ist meine TPageControl-Philosophie richtig?
Zitat:
Zitat:
Mir ging es rein um die VCL-Komponenten, das war nur der notwendigste Code um sich überhaupt durchklicken zu können. Aber darauf wollte ich nicht hinaus. Die TComponent/TControl/TWinControl-Hierarchie glaube ich auch grob verstanden zu haben. Aber vielleicht ist ja beispielsweise das Layout mittels TGridPanel/FlowPanel Quatsch und es gibt besseres? Vor allem das TPageControl selber: Aufgrund der Tatsache dass der Inhalt (Grafiken, Radiogroups) so derbe flackern mache ich ja garantiert etwas falsch! |
AW: Ist meine TPageControl-Philosophie richtig?
Kannst Du mal ein Video zeigen, was da wie flackert?
Mit XE3 konnte ich das nicht starten. Mir schien die GUI sehr verschachtelt. Wenn Du die Sichten umschaltest, könntest Du vielleicht auch einfach den aktuellen Frame zerstören und dann Frame1, 2 oder 3 erzeugen und in das Formular einsetzen. EDIT: Oder lade mal die Exe hoch. |
AW: Ist meine TPageControl-Philosophie richtig?
Zitat:
|
AW: Ist meine TPageControl-Philosophie richtig?
Zitat:
|
AW: Ist meine TPageControl-Philosophie richtig?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Wenn ich auf die alte Windows 2000-Oberfläche zurückschalte dann natürlich nicht :stupid: |
AW: Ist meine TPageControl-Philosophie richtig?
Ach so, ich dachte beim Umblättern würde es flackern...
(Zum möglichen Grund kann ich nichts sagen.) EDIT: Laufen Deine Systeme in einer VM und/oder auf einer sehr lahmen Kiste? |
AW: Ist meine TPageControl-Philosophie richtig?
Hat denn niemand eine Ahnung? Ich schäme mich, so etwas peinliches bald ausliefern zu müssen. Was tut Ihr, damit eure TImages nicht flackern?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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