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 fra Computerworld it-jobbank
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;