Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Frames für mehr Ordnung verwenden? (https://www.delphipraxis.net/155227-frames-fuer-mehr-ordnung-verwenden.html)

stahli 13. Okt 2010 21:58

Frames für mehr Ordnung verwenden?
 
Ich habe in meinem Projekt mehrere verschachtelte PageControls und in den TabSheets jeweils unterschiedliche Komponenten liegen (nix ungewöhnliches).
Ereignisbehandlungen laufen alle in der MainForm.

Jetzt überlege ich, in den einzenlen TabSheets jeweils Frames einzusetzen, die dann die zu nutzenden Komponenten enthalten.
Der Vorteil wäre, dass die "zusammengehörigen" Ereignisbehandlungen in einer Unit gekapselt wären.

Den Nachteil sehe ich in der "Gefahr", dass man in einer Frame-Instanz versehentlich etwas ändert und dann Änderungen im eigentlichen "Design-"Frame nicht mehr syncronisiert werden.
Ich würde dann jeden Frame nur einmal im Projekt verwenden. Zusammengehörige Bereiche lägen aber jeweils in einer Unit.


Was meint Ihr dazu? Nutzt Ihr Frames zu diesem Zweck?


PS: In der DP wurde schon vorgeschlagen, Frames im Designer vor Änderungen sperren zu können. Das würde ich für sehr nützlich finden. Der gesamte Frame könnte in dem Fall auch ausgegraut werden o.ä. (im Designer).

omata 13. Okt 2010 22:01

AW: Frames für mehr Ordnung verwenden?
 
Zitat:

Zitat von stahli (Beitrag 1055667)
Was meint Ihr dazu? Nutzt Ihr Frames zu diesem Zweck?

Was besseres gibt es nicht! Benutze es!

Sei konzentriert bei der Arbeit, dann passiert dir auch nicht ein versehentliches Verändern.
Wenn es doch passiert, kannst du im Notfall auch einfach den Frame entfernen und neu einfügen.

stahli 14. Dez 2010 12:02

AW: Frames für mehr Ordnung verwenden?
 
Angenehmer als Frames finde ich inzwischen eingebettete Formulare:
Delphi-Quellcode:
procedure TFormCompetitors.FormCreate(Sender: TObject);
begin
  FormClubsControl.ManualDock(TabSheetClubsControl, nil, alNone);
  FormClubsControl.Align := alClient;
  FormClubsControl.Show;

  FormClubsOverview.ManualDock(TabSheetClubsOverview, nil, alNone);
  FormClubsOverview.Align := alClient;
  FormClubsOverview.Show;
end;
Man hat so alle Ereignisse und Möglichkeiten von Formularen verfügbar und kann diese zur Laufzeit an beliebiger Stelle einbinden.
In der IDE hält man dafür einfach leere Container (Panels, TabSheets etc) vor.

Mit Frames geht das natürlich auch, Formulare finde ich aber übersichtlicher. Der Formularramen wird dabei automatisch ausgeblendet.

Eine solche Projektstrukturierung kann ich bei komplexeren Programmen unbedingt empfehlen. Das verbessert deutlich die Übersicht über die Quelltexte.

Eine nachträgliche Projektzerlegung sollte man sich jedoch überlegen. Dies kann recht aufwendig werden, da man evtl. Ereignisbehandlungen von Hand übernehmen muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 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