AGB  ·  Datenschutz  ·  Impressum  







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

TCustomTaskDialog Buttons

Ein Thema von TurboMagic · begonnen am 9. Mai 2024 · letzter Beitrag vom 10. Mai 2024
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#1

TCustomTaskDialog Buttons

  Alt 9. Mai 2024, 21:02
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...
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TCustomTaskDialog Buttons

  Alt 9. Mai 2024, 22:00
Die TCollection bekommt im Constructor den Typ der Items mit.
Und der Objektinspektor nutzt den aktuellen Typ zur Laufzeit via TypeInfo/RTTI.
$2B or not $2B
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCustomTaskDialog Buttons

  Alt 10. Mai 2024, 08:51
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
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: TCustomTaskDialog Buttons

  Alt 10. Mai 2024, 09:18
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#5

AW: TCustomTaskDialog Buttons

  Alt 10. Mai 2024, 09:20
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...
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: TCustomTaskDialog Buttons

  Alt 10. Mai 2024, 09:24
Solange nicht jemand böswillig dem Buttons Property eine andere Collection zuweist, die keine TTaskDialogButtonItem enthält, funktioniert das.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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:39 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