求form内button的Enabled属性的通用函数
数据内有权限表如下TB1表{ID button名称(name) Form(窗体name) Enabled属性(1为true,0为FALSE)49 修改 备货数据查询 151 保存 备货数据查询 154 报告 备货业务操作 155 生成 备货业务操作 156 取消 备货业务操作 1}
TWinControl(self.FindComponent('控件名称')).Enabled := 权限 = 1;
[解决办法]
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;......
[解决办法]