在编号失去焦点时判断是否存在。
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;
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;
改为这句话 试一下呢?
改为
Val:= (Sender as TDBEdit).Text;
能说下原因吗?如果有多个字段时DBEditExit事件要怎么区分呢?
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可以判断以后操作的是哪个控件
代码没测试过
多个控件出发OnExit的时候,这个Sender 是不同的,根据这个就能区分出是哪个控件了。