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. 参考一下这个。希望对你有帮助!
...... 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; ......
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.
参考一下这个。希望对你有帮助!
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;
......
又或者
TControl(self.FindComponent('控件名称')).Enabled := 权限 = 1;
这样的办法比较通用,即不过你是TButton,还是TBitBtn 还是TcxButton甚至TEdit等等都可以这样操作,
而TButton(self.FindComponent('控件名称')).).Enabled := 1这种方式印象中只对TButton有效,对TcxButton等等无效的