把控件的名称放在数据表Name中,然后读出。
    Query1:= TADOQuery.Create(Self);
    try
      with Query1 do
      begin
        Connection:= DM.ADOCon;
        Close;
        SQL.Clear;
        SQL.Add('Select Name From Popedom');
        SQL.Add('Where GroupId='''+Trim(GId)+'''');
        Open;
        while not Eof do
        begin
          Trim(FieldByName('Name').AsString).Enabled:= True; \\这句要怎么实现?
          Next;
        end;
        Close;
      end;
    finally
      Query1.Free;
    end;

解决方案 »

  1.   

    Trim(FieldByName('Name').AsString).Enabled:= True; \\这句要怎么实现?你要实现什么?
      

  2.   

    var
      c : TComponent;
    Trim(FieldByName('Name').AsString).Enabled:= True;>>  c :=  FindComponent(FieldByName('Name').AsString);
      if assigned(c) and (c is TWinControl) then
        TWinControl(c).Enabled  :=  True;
      

  3.   

    既然组件名已知就可以这样使用了
    TWinControl( FieldAddress(Trim(FieldByName('Name').AsString))^ ).Enabled:=True;
      

  4.   

    Query1:= TADOQuery.Create(Self);
        try
          with Query1 do
          begin
            Connection:= DM.ADOCon;
            Close;
            SQL.Clear;
            SQL.Add('Select Name From Popedom');
            SQL.Add('Where GroupId='''+Trim(GId)+'''');
            Open;
            while not Eof do
            begin
              c :=  FindComponent(FieldByName('Name').AsString);
              if assigned(c) and (c is TWinControl) then
              TWinControl(c).Enabled  :=  True;
              Next;
            end;
            Close;
          end;
        finally
          Query1.Free;
        end;
    ysai: 你好,把语句放在循环内c的值为nil,放在循环外就可以,为什么?
    hongqi163: 你好,运行会报地址错误?