![]() |
Code vereinfachen (obj as Tbutton)
Hi,
ich möchte auf all diese Objekte zugreifen ohne die vielen ifs: Alle haben das Property caption gemeinsam. Hat jemand eine Idee wie man das vereinfachen kann? Am liebsten wäre mir obj.caption:='tralala'.
Delphi-Quellcode:
Grüsse
(sender as tform).GetTabOrderList(List);
//detect all controls. For n:=0 to list.Count-1 do begin obj:=list.Items[n]; If (obj is Tbutton) then begin (obj as Tbutton).caption:='huhu'; end; If (obj is Tradiobutton) then begin (obj as Tradiobutton).caption:='huhu'; end; If (obj is Tcheckbox) then begin (obj as Tcheckbox).caption:='huhu'; end; end; Rainer |
Re: Code vereinfachen (obj as Tbutton)
Dann schau einfach in welchem gemeinsamen Vorfahr das Property Caption eingeführt/veröffentlicht wurde und nutze dann diesen.
|
Re: Code vereinfachen (obj as Tbutton)
Versuch mal
Delphi-Quellcode:
Ohne Gewähr
if obj is TControl then
TControl(obj).Caption := 'Blabla'; |
Re: Code vereinfachen (obj as Tbutton)
versehentlich abgeschickt.....
|
Re: Code vereinfachen (obj as Tbutton)
Hi himits, hi DeddyH,
glaubt ihr wirklich ich hätte diesen Thread geöffnet wenn ich das nicht schon ausprobiert hätte? Hat jemand eine sinnvolle andere Idee? Grüsse Rainer |
Re: Code vereinfachen (obj as Tbutton)
Und wieso sagst Du uns das nicht? Dann schau mal
![]() |
Re: Code vereinfachen (obj as Tbutton)
Code:
Caption wurde in TControl eingeführt, aber noch nicht veröffentlich (protected).
TButton > TCustomButton > TButtonControl > TWinControl > TControl > ...
TRadioButton > TButtonControl > TWinControl > TControl > ... TCheckBox > TCustomCheckBox > TButtonControl > TWinControl > TControl > ... Veröffentlicht (public/published) wurde es erst in den Endtypen. Da alle Typen den selben Vorfahren haben, wo diese Option eingeführt wurde, kann man nun irgendeinen Typen nehmen, wo es veröffentlicht wurde, da dieses Property, bzw. sein Speicherplatz/Zugriff sich nicht verändert
Delphi-Quellcode:
Der nächste gemeinsame Vorfahr wär TCustomButton:
If (obj is TButton) or (obj is TRadioButton) or (obj is TCheckBox) then
TButton(obj).Caption := 'huhu';
Delphi-Quellcode:
Folgendes würde jetzt für alle Typen, welche von TControl abgeleitet wurden die Caption ändern.
If obj is TCustomButton then
TButton(obj).Caption := 'huhu';
Delphi-Quellcode:
Hab hier intern einfach TButton genommen, da es TCustomButton logisch am Nächsten steht und schön kurz ist.
If obj is TControl then
TButton(obj).Caption := 'huhu';
Delphi-Quellcode:
Type TCustomButtonCaptionAccesss = Class(TCustomButton)
Public // oder Protected, wenn diese Deklaration in der gleichen Unit deklariert Property Caption; // wird, wo man auch drauf zugreifen will End; If obj is TCustomButton then TCustomButtonCaptionAccesss(obj).Caption := 'huhu'; |
Re: Code vereinfachen (obj as Tbutton)
Zitat:
Delphi-Quellcode:
type
THack_Control = class(TControl); procedure Test(obj: TObject); begin if obj is TControl then THack_Control(obj).Caption := 'Blabla'; end; |
Re: Code vereinfachen (obj as Tbutton)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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