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/)
-   -   Delphi Ansprechen eines zur Laufzeit erstellten BitBtn (https://www.delphipraxis.net/112424-ansprechen-eines-zur-laufzeit-erstellten-bitbtn.html)

fips0705 21. Apr 2008 08:46


Ansprechen eines zur Laufzeit erstellten BitBtn
 
Hi,
ich habe einige BitBtn zu Laufzeit erstellt. Alle befinden sich in einer ComponentList.
Darüber kann ich jeden BitBtn mit TBitBtn(BitBtnList[i]) ansprechen.

Jedoch weiß ich nicht wie ich den BitBtn jetzt ein OnClick Ereignis zuordnen soll.

Delphi-Quellcode:
procedure TBitBtn(BitBtnList[i])Click
funktioniert ja nicht.

Bernhard Geyer 21. Apr 2008 08:48

Re: Ansprechen eines zur Laufzeit erstellten BitBtn
 
Delphi-Quellcode:
(BitBtnList[i] as TBitBtn).OnClick := MeineOnClickMethode;

fips0705 21. Apr 2008 08:54

Re: Ansprechen eines zur Laufzeit erstellten BitBtn
 
vielen Dank

OldGrumpy 21. Apr 2008 10:41

Re: Ansprechen eines zur Laufzeit erstellten BitBtn
 
Zitat:

Zitat von Bernhard Geyer
Delphi-Quellcode:
(BitBtnList[i] as TBitBtn).OnClick := MeineOnClickMethode;

Wenn ich hier mal eben hijacken darf... genau das mit as wirft mir immer einen E2015 (operator not applicable to this operand type)... Beispiel:

Delphi-Quellcode:
if (MyTListInstance[i] as TMyType).MyField >0 then DoSomething;
MyTListInstance ist eine TList, TMyType ist der Typ der Objekte die da drinstecken und MyField ist ein Field eines solchen Objektes. Wieso geht das nicht? (Verständnisfrage, brachiales Typecasting ohne as geht...)

bluesbear 21. Apr 2008 10:48

Re: Ansprechen eines zur Laufzeit erstellten BitBtn
 
Hi OldGrumpy,
eine TList ist eine Liste von Pointern, die haben keinen Typ, aber man kann einen typecast machen.
Mit TObjectList geht das so wie du vor hast.

OldGrumpy 21. Apr 2008 12:07

Re: Ansprechen eines zur Laufzeit erstellten BitBtn
 
Dann funktioniert as also nur in der Richtung Object A als Object B zu betrachten, nicht aber im Sinne eines "sicheren" Typecastings. Das macht ja auf den zweiten Blick auch Sinn :)

Nachtrag: Jep, mit einem Typecast auf TObject als Zwischenschritt funktioniert es wie es sollte. Resultierender Tipp: Wann immer es geht, typisierte Listen verwenden :)


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