Question:
I read your answer to someone who was looking to create control arrays as in VB. However, in VB, the index of a control array automatically gets passed to the control’s click event. I want to address an array of edit boxes the same way in Delphi 2.
EditClick (index : integer);not
Edit1ClickEdit2ClickEdit2Click…
Answer:
Is there a pressing need to do this? I ask because since components can share event handlers, the need for componentarrays a la VB is pretty much nullified. I provided the previous answer only becausesomeone asked if it could be done. I demonstrated that it could, with thefull understanding that the primary reason you make component arrays in VBis to share event handlers. That’s seamless in Delphi.
For example, let’s say we have 10 buttons on a form. Clicking on each ofthe buttons, we change their “Tag” property to some value. But for clarity’ssake we’ll number them seqentially from one to 10. Having done that, we can goto the OnClick event handler of one of the buttons (let’s say the first), and write out code like this:
procedure Button1Click(Sender : TObject);begin if Sender IS TButton then case (Sender AS TButton).Tag of 1 : 2 : 3 : 4 : …and so on… end;end;Then with the other nine buttons, all I have to do is go to the ObjectInspector and assign Button1’s OnClick handler to the current button’shandler. This is the exact equivalent to using a single procedure to handlemultiple actions.