下面代码不能通过,原因可能:temp是tComponent 不存在enabled 和readonly等属性.请问要怎样写,才能实现:查找窗体里有没有button1控件,有就将它的enabled属性设为false.
var
  I: Integer;
  Temp: TComponent;
begin
  for I := ComponentCount - 1 downto 0 do
  begin
    Temp := Components[I];
    if (Temp is Tbutton) and (Temp.Name='DBGrid1') then
         Temp.enabled:=false;
    if (Temp is TEdit) and (Temp.Name='Edit1') then
        Temp.readonly:=true;
  end;
end;

解决方案 »

  1.   

    注意,button1可能是放在某个panel里的。
      

  2.   

    for i:=0 to self.ComponentCount-1 do
        if Self.Components[i].ClassType=TButton then
          Tbutton(Self.Components[i]).Enabled := False;
      

  3.   

    如果是TPanel则继续遍历TPanel的component;如果是TComponent就不用管他,反正你只要设置TButton、TEdit,TDBGrid
      

  4.   

    for i:=0 to self.ComponentCount-1 do
      begin
        if components[i].Name='Button1' then //注意Name要区分大小写
      end;
    end;
    至于在不在Panel里没关系
      

  5.   

    var
      i :integer;
    begin
      for i := 0 to ComponentCount-1 do
      begin
        if (Components[i] is TButton) and (Components[i].Name='Button1') then
          Controls[i].Enabled := False;
        if (Components[i] is TEdit) and (Components[i].Name = 'Edit1') then
          TEdit(Components[i]).ReadOnly := True;
      end;
    end;
      

  6.   

    var
      i:integer;
    begin
      for i:= 0 to self.ComponentCount - 1 do
        if (self.Components[i] is TButton) then
          if (self.Components[i] as TButton).Caption = 'Button1' then
             (self.Components[i] as TButton).Enabled := False;          
    end;
    上面的就可以了
      

  7.   

    begin
      for i := 0 to ComponentCount-1 do
      begin
        if (Components[i] is TButton) and (Components[i].Name='Button1') then
          Controls[i].Enabled := False;
      end;
    end;
      

  8.   

    不好意思
    把这句 if (self.Components[i] as TButton).Caption = 'Button1' then
    改为if (self.Components[i] as TButton).Name = 'Button1' then
    就OK
      

  9.   

    你把找到的做,就可以进行任何操作
    self.Components[i] as TButton就跟Button1一样
      

  10.   

    For index:=0 to Panel1.ControlCount-1 do
        if Form1.Components[Index] is TEdit then
          (Form1.Components[Index] as TEdit).Color:=ClLime;
      

  11.   

    for i:=0 to self.ComponentCount-1 do
        if Self.Components[i].ClassType=TButton then
          Tbutton(Self.Components[i]).Enabled := False;