在编号失去焦点时判断是否存在。
with TDBEdit.Create(Self) do
begin
  ...
  Name:= mZdm+'1';  //mZmd为字段名bh
  if Name='bh1' then
  begin
    OnExit:= DBEditExit; 
  end;procedure TMainfrm.DBEditExit(Sender: TObject);
var
  Val: String;
begin
  if Table.State in [dsInsert] then
  begin
    Val:= TDBEdit(FindComponent('bh1')).Text; //这边会出Access violation at address 004A7df7 in module 'main.exe'.Read of address 00000270.
    ...
  end;

解决方案 »

  1.   

     Val:= TDBEdit(FindObject('bh1')).Text;
    改为这句话 试一下呢?
      

  2.   

    Val:= TDBEdit(FindComponent('bh1')).Text;
    改为
    Val:= (Sender as TDBEdit).Text;
      

  3.   

    TO: pazee
        能说下原因吗?如果有多个字段时DBEditExit事件要怎么区分呢?
      

  4.   


    Var
    MyDBEdit:Array of TDBEdit;
    ----------------------
    SetLength(MyDBEdit,30);  
    MyDBEdit[i].Tag:=i; 
    ----------------------  
    Var
      i : integer;
    begin
      i := TDBEdit(Sender).Tag;  //判断点的是哪个
      MyDBEdit[i].Text:='aaa'; 
    end;通过动态创建控件时设置的Tag可以判断以后操作的是哪个控件
    代码没测试过
      

  5.   


    多个控件出发OnExit的时候,这个Sender 是不同的,根据这个就能区分出是哪个控件了。