I want to address an array of edit boxes, like in VB

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.

For example:

EditClick (index : integer);
not
Edit1ClickEdit2ClickEdit2Click…

Answer:
Do you have a pressing need to do this? I ask because, as I stated in thatarticle, because components can share event handlers, the need for componentarrays as in VB is pretty much nullified. I provided the answer only becausesomeone asked if it could be done. I demonstrated that it could, with thefull understanding that the primary reason to 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” properties to a 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.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: