数据内有权限表如下
TB1表
{ID button名称(name) Form(窗体name) Enabled属性(1为true,0为FALSE)
49 修改 备货数据查询 1
51 保存 备货数据查询 1
54 报告 备货业务操作 1
55 生成 备货业务操作 1
56 取消 备货业务操作 1
}打开form窗体的时候,根据Form(窗体name)名称,判断button的Enabled属性是否可用,求一通用函数!

解决方案 »

  1.   

    TWinControl(self.FindComponent('控件名称')).Enabled := 权限 = 1;
      

  2.   

    type
      TForm1 = class(TForm)
        ADOQuery1: TADOQuery;
      private
        procedure setpubrights();
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.setpubrights();
      procedure setvalue(Aname:string);
      begin
        with ADOQuery1 do
        begin
          if Locate('button名称',Aname,[]) then
            TWinControl(self.FindComponent(Aname)).Enabled := FieldByName('Enabled属性').AsInteger = 1;
        end;
      end;
    begin
      ADOQuery1.SQL.Text := ' select * from TB1 where Form='+QuotedStr(Self.Name);
      ADOQuery1.Open();
      with ADOQuery1 do
      begin
        while eof = False do
        begin
          setvalue(FieldByName('button名称').AsString);
          next;
        end;
      end;
    end;
    end.
    参考一下这个。希望对你有帮助!
      

  3.   

    ......
    var
      Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.setpubrights(iForm: TForm);
    var ADOQuery: TADOQuery;
        bt: TComponent;
    begin
      ADOQuery:=TADOQuery.Create(self);
      with ADOQuery do begin
        Connection:=ADOConnection1;//假设你的连接控件是 ADOConnection1
        SQL.Text := ' select * from TB1 where Form='+QuotedStr(iForm.Name);
        Open;
        while not eof do begin
          bt:=iForm.FindComponent(FieldByName('button名称').AsString);
          if bt<>nil then
            TButton(bt).Enabled := FieldByName('Enabled属性').AsInteger = 1;
          next;
        end;
      end;
      FreeAndNil(ADOQuery);
    end;//应用例子:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2:=TForm2.Create(self);
      setpubrights(Form2);
      Form2.ShowModal;
      FreeAndNil(Form2);
    end;
    ......
      

  4.   

    此为正解!
    又或者
    TControl(self.FindComponent('控件名称')).Enabled := 权限 = 1;
    这样的办法比较通用,即不过你是TButton,还是TBitBtn 还是TcxButton甚至TEdit等等都可以这样操作,
    而TButton(self.FindComponent('控件名称')).).Enabled := 1这种方式印象中只对TButton有效,对TcxButton等等无效的