Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 447
  • Last Modified:

Retreiving toolbutton hint from OnClick procedure

I have a number of toolbars each with a number of buttons( 114 buttons altogether !). I need to find out which button has been clicked from a common OnClick procedure. I thought it should be easy enough ( and probably is if only I knew what I was doing). The toolbars have a horizontal set of buttons on each and the toolbars are stacked vertically. I can't seem to access any of the properties which might be of use eg left,top,index. My last idea was to set the hint on each button and find out that way. The hint shows OK on the form at runtime, but is blank if I do

   showmessage(hint); in the onclick procedure.

This is driving me mad as I am sure you will all be shouting out the answer, but I just can't see it.

Thanks
0
jixe
Asked:
jixe
1 Solution
 
shaneholmesCommented:

  TToolButton(Sender).hint

 Shane
0
 
shaneholmesCommented:
You could go through and set all the tag properties of you buttons - 0 - 114

 the assign the same OnCLick event to them

ShowMessage(Inttostr( TToolButton(Sender).Tag));

 Shane
0
 
shaneholmesCommented:
You could go through and set all the tag properties of your buttons to the values ( 0 - 114)

and  then assign the same OnCLick event to them

then you could look at the tag property to determine what button was pushed

ShowMessage(Inttostr( TToolButton(Sender).Tag));


case TToolButton(Sender).tag of
 0: ShowMessage('Button 0 ');
 1: ShowMessage('Button 1 ');
 2: ShowMessage('Button 2 ');
 etc.
end;

 Shane
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
geobulCommented:
Hi,

You may also use buttons names this way:

procedure TForm1.MyCommonToolButtonClick(Sender: TObject);
begin
  if (Sender is TToolButton) then begin
    with (Sender as TToolButton) do begin
      if Name = 'ToolButton1' then begin
        ShowMessage('ToolButton1 was pressed');
      end;
      if Name = 'ToolButton2' then begin
        ShowMessage('ToolButton2 was pressed');
      end;
      // ...
    end;
  end;
end;

Regards, Geo
0
 
shaneholmesCommented:
Thats alot of if thens (120 to be exact)....

 how about

procedure TForm1.MyCommonToolButtonClick(Sender: TObject);
begin
  if (Sender is TToolButton) then
    with (Sender as TToolButton) do      
      if Name = 'ToolButton'  + TToolButton(Sender).Tag then
        ShowMessage('ToolButton' + IntToStr(TToolButton(Sender).Tag ) + 'was pressed');
end;


Shane

0
 
kretzschmarCommented:
as shanes first comment:

procedure TForm1.ToolButtonClick(Sender: TObject);
begin
  if (sender is TToolButton) then
    showmessage(TToolButton(sender).Hint);
end;
0
 
jixeAuthor Commented:
Thanks all you guys. That was quick! Shane was first and it works ( of course).
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now