Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Delphi Language
Expertise: Beginner
May 8, 1997



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Can index of control array be automatically passed to control's click event?

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);

Is there a pressing need to do this? I ask because since components can share event handlers, the need for component arrays a la VB is pretty much nullified. I provided the previous answer only because someone asked if it could be done. I demonstrated that it could, with the full understanding that the primary reason you make component arrays in VB is to share event handlers. That's seamless in Delphi.

For example, let's say we have 10 buttons on a form. Clicking on each of the buttons, we change their "Tag" property to some value. But for clarity's sake we'll number them seqentially from one to 10. Having done that, we can go to the OnClick event handler of one of the buttons (let's say the first), and write out code like this:

procedure Button1Click(Sender : TObject);
  if Sender IS TButton then
    case (Sender AS TButton).Tag of
      1 :
      2 :
      3 :
      4 :
      ...and so on...
Then with the other nine buttons, all I have to do is go to the Object Inspector and assign Button1's OnClick handler to the current button's handler. This is the exact equivalent to using a single procedure to handle multiple actions.
DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date