/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Problemer med typecasting...
Fra : Thomas Eg Jørgensen


Dato : 28-12-02 15:10

Hej

Jeg har brug for at lave en søgning efter objecter på en given form. Til
dette bruger jeg en lykke ud fra components-parameteren på formen.

Mit problem ligger så i at jeg skal kunne læse caption-værdien på alle
objecterne på min form. Disse objecter kan være TButton, TBitBtn, TLabel,
TGroupBox osv. De nedstammer dog (næsten) alle fra TControl og så tænkte jeg
at løsningen kunne være:

str1:=TControl(MyObject).caption;

Men den påstår at Tcontrol ikke har ikke caption variabel, men jeg synes
ikke jeg kan få det til at passe med mine manualer som påstår at de netop
har en sådan værdi...?

Et sidste og forholdsvis vigtigt spørgsmål: kan man godt typecaste "tilbage
i hirakiet" for en komponent? I førnævnte eksempel kunne MyObject være en
TLabel som jo netop nedstammer fra en Tcontrol...

Go' Jul og på forhånd tak...

MVH
Thomas



 
 
Harald (28-12-2002)
Kommentar
Fra : Harald


Dato : 28-12-02 16:56

"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> skrev i en meddelelse
news:3e0db063$0$88617$bc7fd3c@news.sonofon.dk...
> Hej
>
> Jeg har brug for at lave en søgning efter objecter på en given form. Til
> dette bruger jeg en lykke ud fra components-parameteren på formen.
>
> Mit problem ligger så i at jeg skal kunne læse caption-værdien på alle
> objecterne på min form. Disse objecter kan være TButton, TBitBtn, TLabel,
> TGroupBox osv. De nedstammer dog (næsten) alle fra TControl og så tænkte
jeg
> at løsningen kunne være:
>
> str1:=TControl(MyObject).caption;
>
> Men den påstår at Tcontrol ikke har ikke caption variabel, men jeg synes
> ikke jeg kan få det til at passe med mine manualer som påstår at de netop
> har en sådan værdi...?

Kender ikke så meget til det område så jeg vrøvler muligvis :) men jeg
prøver da på at lære det. Caption er i TControl defineret under protected så
derfor kan du ikke få fat i den. En måde er at benytte TControl functionen
GetTextBuf men det virker lidt bøvlig syntes jeg. En anden måde er at
oprette en ny klasse således:

TTest = class(TControl)
function getcaption : string;
end;
..
..
function TTest.getcaption : string;
begin
result:=caption;
end;

Så kan du hente caption sådan:
str1:=TTest(MyObject).getcaption;

Jeg har testet det og det virker fint.


> Et sidste og forholdsvis vigtigt spørgsmål: kan man godt typecaste
"tilbage
> i hirakiet" for en komponent? I førnævnte eksempel kunne MyObject være en
> TLabel som jo netop nedstammer fra en Tcontrol...

Ja

Mvh
HK





Henry (28-12-2002)
Kommentar
Fra : Henry


Dato : 28-12-02 18:21

> TGroupBox osv. De nedstammer dog (næsten) alle fra TControl og så tænkte
jeg
> at løsningen kunne være:
>
> str1:=TControl(MyObject).caption;
>

Du skal bare bruge "is"

if SomeObject is TLabel then
begin
s := TLabel(SomeObject).caption;
end
else if SomeObject is TSomeOtherClass then DoSomeThingElse

osv osv

is sammenligner klasser
= sammenligner værdier

henry





Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste