08. januar 2007 - 08:04
Der er
2 kommentarer og 1 løsning
Udlede metodenavn ud fra sender object
Hej Jeg har en række knapper navngivet "knap1","knap2" osv. På alle knapper er angivet onClick proceduren "Click", som pt. ser således ud: procedure click(sender:Tobject); begin if sender=knap1 then object1.doSomething; if sender=knap2 then object2.doSomething; ... end; Kan man udlede objectet (navngivet med samme nummer som knappen) af sender. Jeg forestiller mig noget i retning af: procedure click(sender:tobject); begin object(copy(sender.name,5,maxint).doSomething; ...men jeg kan ikke få det til at virke.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
10. januar 2007 - 09:48
#1
Ja da. Du bruger bare "as" operatoren og tag-property'en (der vist kom på i TWinControl) Den alminligste metode er at sætte tag = nummeret: case ((Sender as TEdit).Tag of 0 : Object.DoSomething0; 1 : Object.DoSomething1; 2 : Object.DoSomething2; end; og det vil virke fint hos dig. Men det er typisk et tegn på at man ikke har lavet det rigtigt. Med objektorientering skulle det ikke være nødvendigt. Du kunne også lave dine DoSomething's om til formatet TNotifyEvent: procedure TMyObject.DoSomething(Sender : TObject); og så tilknytte dem direkte til knappens OnClick via din forms OnCreate: btnKnap0.OnClick := Object.DoSomething0; btnKnap1.OnClick := Object.DoSomething1; btnKnap2.OnClick := Object.DoSomething2;
11. januar 2007 - 14:41
#2
Jeg har fået tag til at virke på følgende måde: TMitobject(TButton(Sender).Tag).doSomething;
12. januar 2007 - 09:30
#3
Så du smækker et objekt hen over Tag'et. Jeg prøver altid at undgå at typecaste et objekt til en integer eller lignende. Det er risikabel kodning og tit grund til underlige fejl.
Kurser inden for grundlæggende programmering