我查詢一數據庫後.
  在窗口上動態生成了一些組件:
while not adoquery1.eof do
begin
ss:=Tbsskincheckradiobox.Create(application);
ss.Parent:=box;
ss.Name:='chick'+inttostr(adoquery1.RecNo);
ss.caption:=adoquery1.fieldbyname('name').asstring;
ss.Left:=200;
ss.Top:=30+25*adoquery1.RecNo;
ss.SkinData:=mainskindata;
adoquery1.Next;
end;
         現有一按鈕.!單擊它後把上面自動生成的組件中checked為True的Caption顯示出來.!
   for   i:=0   to   form12.ControlCount-1   do
  begin
      if   (form12.Controls[i]   is  Tbsskincheckradiobox   )   then
      begin
       if (form12.Controls[i]   as   Tbsskincheckradiobox).Checked then
        begin
         s:=(form12.Controls[i]   as   Tbsskincheckradiobox).caption;
         showmessage(s);
        end;
     end;
  end;   這段沒反映.!var
  AComponent: TComponent;
  I: Integer;
  S: string;
begin
  for I := 1 to AdoQuery1.RecordCount  do
  begin
    AComponent := FindComponent('chick'+inttostr(i));
    if AComponent is Tbsskincheckradiobox then
      with Tbsskincheckradiobox(AComponent) do
        if Checked then S := S + Caption;
  end;
showmessage(s);
end;  這段也沒反映:S出來的是空串  for   i:=1   to adoquery1.RecordCount  do
begin
  if  Tbsskincheckradiobox(findcomponent('chick'+inttostr(i))).Checked then
       s:=s+Tbsskincheckradiobox(findcomponent('chick'+inttostr(i))).Caption;
end;  
這段報錯.!

解决方案 »

  1.   

    ss:=Tbsskincheckradiobox.Create(Self);//解决第二个问题
    ss.Parent:=box;for   i:=0   to   Box.ControlCount-1   do //你的控件是放在Box容器里的
      begin
          if   (form12.Controls[i]   is  Tbsskincheckradiobox   )   then
          begin
           if (form12.Controls[i]   as   Tbsskincheckradiobox).Checked then
            begin
             s:=(form12.Controls[i]   as   Tbsskincheckradiobox).caption;
             showmessage(s);
            end;
         end;
      end;
      

  2.   

    for i := 0 to self.ComponentCounts - 1 do
      

  3.   

    for i := 0 to self.ComponentCount - 1 do
      

  4.   

    這段也沒反映:S出來的是空串
    ----------------------------
    单步跟踪看看
    if Checked then 
      S := S + Caption;
    有没有执行
      

  5.   

    for   i:=0   to   box.ControlCount-1   do
      begin
          if   (box.Controls[i]   is  Tbsskincheckradiobox   )   then
          begin
           if (box.Controls[i]   as   Tbsskincheckradiobox).Checked then
            begin
             s:=(box.Controls[i]   as   Tbsskincheckradiobox).caption;
             showmessage(s);
            end;
         end;
      end; 
    //OK
      

  6.   

    Tbsskincheckradiobox.Create的参数Owner应该是Form而不是Application