显示数据控件为DBGRID
//--------新增一条记录-------------
procedure TTel.ToolButton1Click(Sender: TObject);
begin
 datasource1.DataSet.Append;
 showmessage('请在右边的文本框中输入新数据的详细内容');
 //允许修改文本框中的内容
 dbedit1.ReadOnly:=false;
 dbedit2.ReadOnly:=false;
 dbedit3.ReadOnly:=false;
 dbedit4.ReadOnly:=false;
 dbedit5.ReadOnly:=false;
 dbedit6.ReadOnly:=false;
 dbcombobox1.ReadOnly:=false;
 //允许保存和取消对数据所做的操作
 toolbutton5.Enabled:=true;
 toolbutton6.Enabled:=true;
 //将新建、编辑、删除、退出关闭,防止错误操作
 toolbutton1.Enabled:=false;
 toolbutton2.Enabled:=false;
 toolbutton3.Enabled:=false;
 toolbutton8.Enabled:=false;end;
这是新增按钮的语句。
本来想实现点击新建按钮,在DBEDIT文本编辑框输入数据,进行保存。每次第一次点击新建按钮后,选择DBEDIT文本框后新增行就会消失,跳到有数据的行,DBEDIT文本框就去显示已有的数据,但是我第二次选择新建又可以正常输入了,求大侠帮忙贴点语句出来解决下,多谢大家了。

解决方案 »

  1.   

    改一下;
    //--------新增一条记录-------------
    procedure TTel.ToolButton1Click(Sender: TObject);
    begin
      showmessage('请在右边的文本框中输入新数据的详细内容');
     //允许修改文本框中的内容
     dbedit1.ReadOnly:=false;
     dbedit2.ReadOnly:=false;
     dbedit3.ReadOnly:=false;
     dbedit4.ReadOnly:=false;
     dbedit5.ReadOnly:=false;
     dbedit6.ReadOnly:=false;
     dbcombobox1.ReadOnly:=false;
     //允许保存和取消对数据所做的操作
     toolbutton5.Enabled:=true;
     toolbutton6.Enabled:=true;
     //将新建、编辑、删除、退出关闭,防止错误操作
     toolbutton1.Enabled:=false;
     toolbutton2.Enabled:=false;
     toolbutton3.Enabled:=false;
     toolbutton8.Enabled:=false;
     //换一下位置,防止可能由于焦点改变出现一些状况。
     //datasource1.DataSet.Append;//此处直接写adoquery1.append更方便直观。
      adoquery1.append;
      adoquery1.fieldbyname('姓名').asstring:='';//给它一个默认值,否则不会增加行
      dbedit1.setfocus;//第一个字段获得焦点,开始编辑
    end;
      

  2.   

    你這個應是焦點問題,在DBGrid中,焦點移到下一行就會執行POST,在數據表中可能增加一條空記錄(如果數據庫允許<沒有設定主鍵、限制等>)。你的語句改下順序再加一句將焦點設置到DBEdit1。
    procedure TTel.ToolButton1Click(Sender: TObject);
    begin
     dbedit1.ReadOnly:=false;
     dbedit1.SetFocus;
     datasource1.DataSet.Append;
     showmessage('请在右边的文本框中输入新数据的详细内容');
     //允许修改文本框中的内容
     //dbedit1.ReadOnly:=false;
     dbedit2.ReadOnly:=false;
     dbedit3.ReadOnly:=false;
    ......
      

  3.   

    代码没什么错,你的dbedit没有关联datasource1吗?
    关联了的话新建时dbedit为清空的,showmessage不需要,显得多余了编辑状态不能点击DBGrid其它行,否则会提交数据保存或者会撤消的