![]() |
TCustomTaskDialog Buttons
Hallo,
woher kommt das bzw. wie funktioniert das: VCL's TCustomTaskDialog hat eine Liste mit Buttons. Lt. Deklaration aus TCustomTaskDialog so definiert: FButtons: TTaskDialogButtons; was TTaskDialogButtons = class(TOwnedCollection) ist und intern ist das FButtonList: TTaskDialogButtonList; was auf das hinaus läuft: TTaskDialogButtonList = array of TTaskDialogButton; Aber: alle Getter etc. von TTaskDialogButtons liefern TTaskDialogBaseButtonItem statt TTaskDialogButtonItem nur der Objektinspektor kann damit alles was TTaskDialogButtonItem besitzt editieren?! Das verstehe ich jetzt nicht: 1. Warum liefert diese Collection basierte Klasse TTaskDialogBaseButtonItem statt TTaskDialogButtonItem, obwohl sie intern TTaskDialogButtonItem verwaltet? 2. Warum kann der ObjektInspektor das wie TTaskDialogButtonItem verwalten? Darüber hinaus bräuchte ich in meiner Klasse das auch so... |
AW: TCustomTaskDialog Buttons
Die TCollection bekommt im Constructor den Typ der Items mit.
Und der Objektinspektor nutzt den aktuellen Typ zur Laufzeit via TypeInfo/RTTI. |
AW: TCustomTaskDialog Buttons
Hallo,
danke schon mal für die Antwort, nur stellt mich das immer noch vor das Rätsel wie ich jetzt zur Laufzeit auf den CommandLinkHint des jeweiligen Buttons zugreifen kann und warum das nicht gleich so gemacht ist, dass das von Haus aus ohne Klimmzüge geht... Grüße TurboMagic |
AW: TCustomTaskDialog Buttons
Es gibt neben TTaskDialogButtonItem als Ableitung von TTaskDialogBaseButtonItem ja auch noch TTaskDialogRadioButtonItem, die man analog im Property RadioButtons findet. Um jetzt nicht für beide (und eventuell zukünftige) Button-Typen eigene Collections und Enumerators erstellen zu müssen, ist man halt auf den gemeinsamen Vorfahren ausgewichen. Das war und ist die übliche Vorgehensweise in solchen Fällen. Es betrifft ja auch lediglich die Eigenschaften CommandLinkHint und ElevationRequired, für die man einen Cast einsetzen muss.
|
AW: TCustomTaskDialog Buttons
Ah! Danke, das erkläärt das. Wenn ich also einen Cast darum mache funktioniert es?
War mir halt nicht sicher, nicht dass ich einfach irgendwie im Speicher rumschreibe... ;-) |
AW: TCustomTaskDialog Buttons
Solange nicht jemand böswillig dem Buttons Property eine andere Collection zuweist, die keine TTaskDialogButtonItem enthält, funktioniert das.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz