Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Dynamischer Eigenschaftsdialog (https://www.delphipraxis.net/192109-dynamischer-eigenschaftsdialog.html)

Phunkafizer 20. Mär 2017 22:33

Dynamischer Eigenschaftsdialog
 
Hallo liebe Delphingemeinde,

Ich brauche für meine Anwendung einen Dialog, dessen Inhalte sich je nach zu bearbeitenden Objekt ändern sollen. Angenommen ich habe ein TOfenrohr, TBratwurst, TDachlatte, die alle von TDings abgeleitet sind. Je nachdem welches Objekt ich zum Bearbeiten anklicke sollen in einer Box verschiedene Controls dargestellt werden, z.B. für das Ofenrohr ein Slider für den Durchmesser, bei TBratwurst eine Checkboxen und ein Colorwheel. Wie könnte man so was aufbauen?

Stefan

nahpets 20. Mär 2017 23:49

AW: Dynamischer Eigenschaftsdialog
 
Für jeden Nachkommen von TDings ein Frame machen, dass die entsprechende Darstellung enthält.

Das konkret benötigte Frame wird sichtbar gemacht, die anderen unsichtbar.

Oder

Für jeden Nachkommen von TDings einen Dialog machen und TDings-nachkommenabhängig dann den passenden Dialog nutzen.
Der TDings-Dialog kann dann der Vorfahre der Dialog für die TDings-Nachkommen sein.

Quasi sowas:

TDings -> TDingsDialog
TOfenrohr -> TOfenrohrDialog
TBratwurst -> TBratwurstDialog
TDachlatte -> TDachlatteDialog

so, wie TOfenrohr, TBratwurst und TDachlatte Nachkommen von TDings sind, werden die Dialoge Nachkommen von TDingsDialog.

Oder

Für alles, was zu TDings gehört einen Dialog machen und nachkommenabhängig dort die "Spezialitäten" per GroupBox, Panel ... sichtbar machen.

Oder

Könnte der Dialog eine Methode von TDings sein, wobei er für die Nachkommen entsprechend angepasst wird?

freimatz 21. Mär 2017 07:35

AW: Dynamischer Eigenschaftsdialog
 
Zitat:

Zitat von nahpets (Beitrag 1364886)
Für jeden Nachkommen von TDings ein Frame machen, dass die entsprechende Darstellung enthält.
...
Für alles, was zu TDings gehört einen Dialog machen und nachkommenabhängig dort die "Spezialitäten" per GroupBox, Panel ... sichbar machen.

Ein TFrame schlage ich vor.

Phunkafizer 21. Mär 2017 16:34

AW: Dynamischer Eigenschaftsdialog
 
Danke für die Idee mit dem Frame! Habe mir gedacht ich könnte ja in TDings eine virtuelle Methode einbauen wie
Function GetFrame: Tframe

Und z.B. in TBratwurst wird Bratwurstframe zurückgegeben. Wie schaffe ich es dann dynamisch etwa in einem Panel auf dem Hauptformular das entsprechende Frame zur Laufzeit einzublenden?

Stefan

Blup 21. Mär 2017 16:40

AW: Dynamischer Eigenschaftsdialog
 
Eher eine Faktory bei der du für jede Fachklasse eine Frameklasse registrierst.

Du erzeugts das Frame zur Laufzeit mit dem entsprechenden Owner.
Parent und Position zuweisen.

hoika 22. Mär 2017 09:50

AW: Dynamischer Eigenschaftsdialog
 
Hallo,
Zitat:

Wie schaffe ich es dann dynamisch etwa in einem Panel auf dem Hauptformular das entsprechende Frame zur Laufzeit einzublenden?
Delphi-Quellcode:
Frame_Dings.Visible := False;
Frame_X.Visible := False;

Frame_Ofenrohr.Visible := True;
Ich gehe hier mal davon aus, die die Anzahl der verschiedenen Frames bekannt ist.

Oder habe ich die Frage nicht verstanden?


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