小
小梅
Unregistered / Unconfirmed
GUEST, unregistred user!
今天本人太不爽了,被DELPHI 搞惨了。
问题是这样的:
我建了一个父窗体(MainFrm),还有许多的子窗体,其中有一个名为PackMainFrm的子窗体,
在工程中设置为Available form。在父窗体菜单的Click事件中SHOW 上子窗体PackMainFrm,
procedure TMainFrm.N14Click(Sender: TObject);
var
PackFrm: TPackFrm;
begin
Screen.Cursor:=crHourglass;
PackFrm:=TPackFrm.Create(self);
PackFrm.Show;
Screen.Cursor:=crDefault;
end;
(当再击一次,又创建成了一个PackMainFrm窗体)
另建一数据模块(PackPackDModule) 数据控件为ADO。
功能如下:
当插入一新记录后,将当前光标置给 DBEdit25
procedure TPackDModule.BoxADOTAfterInsert(DataSet: TDataSet);
begin
PackFrm.DBEdit25.SetFocus;
end;
结果如下所示:
Error
Project HD.exe raised exception class EAccessViolation with
message'Access violation at address 0049E85B in module 'HD.EXE'.
Read of address FFFFFFFF'.Process stopped.Use step or Run to
continue.
┌─────┐
│ O K │
└─────┘
如果将子窗体PackMainFrm设置为Auto-Create form。
则以上操作不会报错。
第一问:以上出错的原因及解决的方法?(100分)
第二问:怎样控制窗体不被重复创建? (20分)
问题是这样的:
我建了一个父窗体(MainFrm),还有许多的子窗体,其中有一个名为PackMainFrm的子窗体,
在工程中设置为Available form。在父窗体菜单的Click事件中SHOW 上子窗体PackMainFrm,
procedure TMainFrm.N14Click(Sender: TObject);
var
PackFrm: TPackFrm;
begin
Screen.Cursor:=crHourglass;
PackFrm:=TPackFrm.Create(self);
PackFrm.Show;
Screen.Cursor:=crDefault;
end;
(当再击一次,又创建成了一个PackMainFrm窗体)
另建一数据模块(PackPackDModule) 数据控件为ADO。
功能如下:
当插入一新记录后,将当前光标置给 DBEdit25
procedure TPackDModule.BoxADOTAfterInsert(DataSet: TDataSet);
begin
PackFrm.DBEdit25.SetFocus;
end;
结果如下所示:
Error
Project HD.exe raised exception class EAccessViolation with
message'Access violation at address 0049E85B in module 'HD.EXE'.
Read of address FFFFFFFF'.Process stopped.Use step or Run to
continue.
┌─────┐
│ O K │
└─────┘
如果将子窗体PackMainFrm设置为Auto-Create form。
则以上操作不会报错。
第一问:以上出错的原因及解决的方法?(100分)
第二问:怎样控制窗体不被重复创建? (20分)