已知控件可以利用:Tedit(FindComponent('Edit'+inttostr(i))).Text等完成赋值操作. 但未知的已知控件如何赋值呢? 如:下面我的问题:
我在窗体里放了Pagecontrol控件,它所有的页面都是由程序创建的.
由于页面内需要创建的控件可能很多,所以我又在TabSheet里,由程序创建了ScrollBox控件以实现加一个滚动条的效果.它的名字相应的叫ScrollBox1,2,3...
 问题:我如何给未知的已知控件赋值?
ScrollBox1.FindComponent

解决方案 »

  1.   

    随手写一下,楼主自己调试var
      I, J, K: Integer;
      ScrollBox: TScrollBox;
    begin
      for I := 0 to PageControl.Count - 1 do
      begin
        for J := 0 to PageControl.Pages[I].ComponentCount - 1 do
        begin
          
          if PageControl.Page[I].Components[J] is TScrollBox then 
          begin
            ScrollBox := PageControl.Page[I].Components[J] as TScrollBox;
            for K := 0 to ScrollBox.ComponentCount - 1 do
            begin
              if ScrollBox.Components[K] is TEdit then 
                 (ScrolLBox.Components[K] as TEdit).Text := '....';
            end;
            Break; 
          end;
        end; 
      end;
    end;
      

  2.   

    for K := 0 to ScrollBox.ComponentCount - 1 do
            begin
              if ScrollBox.Components[K] is TEdit then 
                 (ScrolLBox.Components[K] as TEdit).Text := '....';
            end;
    你认定它是文本编辑框,这样不好吧.而一个录入窗口有很多种类型的控件.
    if (ScrollBox.FindComponent('yourname'+inttostr(PageControl1.TabIndex)+'_'+inttostr(k)) is Tedit) then begin
            ....
         end;
      

  3.   

    for K:= 0 to ScrollBox.ControlCount - 1 do
                  begin
                    if ScrollBox.Controls[k] is TEdit then
                       (ScrollBox.Controls[K] as TEdit).Text := '....'
                       else
                      // memo1.Lines.Add(ScrollBox.Components[K].Name); //这样写不正确                   memo1.Lines.Add(ScrollBox.Controls[K].Name); //Controls
                  end;