Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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
Edit1Click
Edit2Click
Edit2Click...

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

 

 

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