This ought to work a little better for you:

For X:=0 to Form1.ComponentCount-1 do
If Form1.Components[X] is TSpeedbutton then
If (Form1.Components[X] as TSpeedbutton).Name = 'SpdBtn' + IntToStr(I) then
       Case I of
      1: SpdBtn1.Caption := Strlist[0];
      2: SpdBtn2.Caption := Strlist[1];
etc....
    End;



"Nesler, Thomas J" <[EMAIL PROTECTED]> wrote:                               
Hello!
 
 I added the check for the component type and then built a for loop to
 cycle through the list.
 
 Here is my altered code now:
 
 For X:=0 to Form1.ComponentCount-1 do
    begin
     If Components[X] is TSpeedbutton then
     For I :=1 to 21 do   //I have 21 speedbuttons
     Begin
     If (Sender as TSpeedbutton).Name = 'SpdBtn' + IntToStr(I) then
      Begin
       Case I of
      1: SpdBtn1.Caption := Strlist[0];
      2: SpdBtn2.Caption := Strlist[1];
  ....
    End;
   end;
  end;
 End;
 
 I am still getting an Invalid Class typecast error even after my code
 has discovered a Speedbutton component.  Any other suggestions?
 
 Thanks in advance for your input.
 
 Tom Nesler
 
 -----Original Message-----
 From: [email protected] [mailto:[EMAIL PROTECTED] On
 Behalf Of Charlie Chambers
 Sent: Thursday, March 06, 2008 12:07 PM
 To: [email protected]
 Subject: Re: [delphi-en] Locating Speedbutton controls
 
 Hi All,
 Think there's still may be a problem with the code as you wrote
 as your wanting to not check the sender but get the internal list from
 the form of the components it contains.
 
 I think this code might work better:
 for C:=0 to Form1.ComponentCount-1 do begin
    if Components[C] is TSpeedbutton then begin
      //do something
    end;
 end;
 
 Cheers,
 Charlie
 
 ----- Original Message ----- 
   From: David Smith 
   To: [email protected] 
   Sent: Thursday, March 06, 2008 11:56 AM
   Subject: Re: [delphi-en] Locating Speedbutton controls
 
 If you're going to cycle through all the components as Charlie showed
 earlier, you have to check type first. I.E.
 
 For i := 0 to form1.components.componentcount - 1 do
   If (Sender is TSpeedbutton) Then
   If (Sender as TSpeedbutton).Name = 'caption' Then //do something
   else If (Sender as TSpeedbutton).Name = 'caption1' do //something else
 
 Charlie Chambers <[EMAIL PROTECTED]> wrote: Hi Tom,
   Looks like Peter showed another way that may work better for you but
 sounds like to me the problem is that the sender is not a TSpeedbutton
 so... the invalid type case issue. The name string as you've written it
 looks ok to me.
 
 The code i send works better where you send all the TSpeedbuttons
 click methods to one procedure and sort out which one your firing. You
 many want to iterate all the components as my #3 suggestion. Depends on
 where you put the code to make the changes for what your doing.
 
 If i can help further... let me know.
 
 Cheers,
   Charlie
 
 ----- Original Message ----- 
   From: Nesler, Thomas J 
   To: [email protected] 
   Sent: Thursday, March 06, 2008 10:34 AM
   Subject: RE: [delphi-en] Locating Speedbutton controls
 
 Hello!
 
 I tried using this tip but I am getting a runtime error Einvalidcast
   when I try to run my program. The error is Invalid Type Cast.
 
 It appears that it does not like the Name property.
 
 Here is how I am using your suggestion:
 
 If (Sender as TSpeedbutton).Name = 'SpdBtn' + IntToStr(I+1) then
   begin
   case I+1 of
   1: SpdBtn1.Caption := Strlist[1];
   2: SpdBtn1.Caption := Strlist[2];
   ...
 
 End;
   End;
 
 Any suggestions?
 
 Tom Nesler
 
 -----Original Message-----
   From: [email protected] [mailto:[EMAIL PROTECTED] On
   Behalf Of Charlie Chambers
   Sent: Wednesday, March 05, 2008 6:39 PM
   To: [email protected]
   Subject: Re: [delphi-en] Locating Speedbutton controls
 
 Hi Tom,
 
 i think your looking for:
   if (Sender as TSpeedbutton).Name='SpdBtn1' then
   //do something
 
 if you don't know the name of the component then when you create the
   component set the Tag property to a known amount as 20-41 to find
   components as
 
 if (Sender as TSpeedbutton).Tag=21 then
   //do something
 
 Or you can iterate through all the components on the form as
 
 for C:=0 to Form1.ComponentCount-1 do begin
   if Components[C] is TSpeedbutton then begin
   //do something
   end;
   end;
 
 Cheers,
   Charlie
 
 ----- Original Message ----- 
   From: Nesler, Thomas J 
   To: [email protected] 
   Sent: Wednesday, March 05, 2008 4:26 PM
   Subject: [delphi-en] Locating Speedbutton controls
 
 Hello!
 
 I have a Coolbar with 21speed buttons on it. I need to enter captions
   on the fly for these speedbuttons. How can I find these buttons and
   load the captions?
 
 I know there is some kind of search find function but I can't seem to
   locate it right now.
 
 Thanks in advance!
 
 Tom Nesler
 
 [Non-text portions of this message have been removed]
 
 [Non-text portions of this message have been removed]
 
 -----------------------------------------------------
   Home page: http://groups.yahoo.com/group/delphi-en/
   To unsubscribe: [EMAIL PROTECTED] 
   Yahoo! Groups Links
 
 [Non-text portions of this message have been removed]
 
 ---------------------------------
   Never miss a thing. Make Yahoo your homepage.
 
 [Non-text portions of this message have been removed]
 
 [Non-text portions of this message have been removed]
 
 -----------------------------------------------------
 Home page: http://groups.yahoo.com/group/delphi-en/
 To unsubscribe: [EMAIL PROTECTED] 
 Yahoo! Groups Links
 
 
     
                               

       
---------------------------------
Be a better friend, newshound, and know-it-all with Yahoo! Mobile.  Try it now.

[Non-text portions of this message have been removed]

Reply via email to