在我做的是一个输入窗体,窗体上有多个dbedit,和dbComboBox.一个"保存"button.
想要实现在没有输入数据的时候"保存"的visible:=false;当有数据输入时"保存"的visible:=true;点击后为false:当修改某个dbedit或dbcombobox的值时,"保存"的visible又为true;也就是dbnavigator里的"+"功能.
请问怎么实现呀??请帮助!!!

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ...
       button.visible:=false;
    ...
    end;procedure TForm1.Edit1Change(Sender: TObject);
    begin
    ...
       button.visible:=ture;
    ...
    end;procedure TForm1.dbComboBoxChange(Sender: TObject);
    begin
    ...
       button.visible:=ture;
    ...
    end;
      

  2.   

    你可以使用数据集的State属性
    if adoquery1.state in [dsEdit,dsInsert] then
      btnSave.visible:=true
    else
      btnSave.visible:=false;
    当然你也可以使用函数或者过程来调用
    其它:dsBrowse,dsFilter...
      

  3.   

    有多个dbedit,和dbComboBox每个都要这么写吗!有没有更简单的方法呀!!
      

  4.   

    楼上的方法看来很好,但有但没看懂!:(
    我用的是 adoquery
      

  5.   

    楼上的是根据数据集的状态来判断BTNSAVE的VISIBLE
    dsEdit,dsInsert即在数据集的编辑和INSERT状态时,btnsave为enable=true
    也就实现了你想要的功能
      

  6.   

    对!如果数据集发生了变化则说明你的数据感知控件改动了
    这时就设置btSave.visible := False;
      

  7.   

    在edit 发生change的同时,判断是否所有的的edit.text中是否有内容,是的话
    if edit1.text:='' then
    ...
    else if edit2.text='' then
    ......visible:=true;
      

  8.   

    if adoquery1.state in [dsEdit,dsInsert] then
      btnSave.visible:=true
    else
      btnSave.visible:=false;
    请问这句写在哪里呀!!!
    procedure TForm1.FormShow(Sender: TObject);
    procedure TForm1.FormCreate(Sender: TObject);
    我写在如上里面都不行呀!都执行btnSave.visible:=false;
    而不执行btnSave.visible:=true,我怎么改呀!!!