首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求form内button的Enabled属性的通用函数解决思路

2013-01-01 
求form内button的Enabled属性的通用函数数据内有权限表如下TB1表{IDbutton名称(name)Form(窗体name)Enable

求form内button的Enabled属性的通用函数


数据内有权限表如下
TB1表
{IDbutton名称(name)Form(窗体name)Enabled属性(1为true,0为FALSE)
49修改备货数据查询1
51保存备货数据查询1
54报告备货业务操作1
55生成备货业务操作1
56取消备货业务操作1
}

打开form窗体的时候,根据Form(窗体name)名称,判断button的Enabled属性是否可用,求一通用函数!
[解决办法]
Button.Enabled:= Form.Name=XX
[解决办法]
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;

implementation

uses 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;
......

------解决方案--------------------


引用:
Delphi(Pascal) code
TWinControl(self.FindComponent('控件名称')).Enabled := 权限 = 1;

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

热点排行