我动态创建了一个MDIChildForm,然后通过点击一个Button在动态创建一个窗体(NomalForm),然后再NomalForm里读取MDIChildForm上的Label.caption,编译时没有错,但是到了运行时老是报错:说“Access Violation at address 006ABCB0 in module 'Me...'”
请问各位高手有没有遇到过这种情况,是什么问题,请知点?在线等待!
...全文
3018打赏收藏
想也想不明白的问题?
我动态创建了一个MDIChildForm,然后通过点击一个Button在动态创建一个窗体(NomalForm),然后再NomalForm里读取MDIChildForm上的Label.caption,编译时没有错,但是到了运行时老是报错:说“Access Violation at address 006ABCB0 in module 'Me...'” 请问各位高手有没有遇到过这种情况,是什么问题,请知点?在线等待!
问题是这样的:
我动态创建了一个MDIChildForm(Frm_EditImport),然后通过点击一个Button在动态创建一个NomalForm(Frm_AddInImport),然后再Frm_AddInImport里读取Frm_EditImport上的Label.caption,编译时没有错,但是到了运行时老是报错:说“Access Violation at address 006ABCB0 in module 'Me...'”
现在我已经知道了问题所在:
我是这样创建Frm_EditImport的:
MyDataModule.ShowChildForm('ModifyRuku',TFrm_EditImport);
Function TMyDataModule.IsHoldPower(PowerName: string):Boolean;
begin
FuncQuery.Close;
FuncQuery.SQL.Text := 'SELECT Powers.PowerName, Roles.GroupID FROM Roles INNER JOIN Powers ON Roles.PowerID = Powers.PowerID where Powers.PowerName=:PowerName and Roles.GroupID=:GroupID';
FuncQuery.Parameters.ParamByName('PowerName').Value := PowerName;
FuncQuery.Parameters.ParamByName('GroupID').Value := CurGroupID;
FuncQuery.Open;
if FuncQuery.IsEmpty then
IsHoldPower := False
else
IsHoldPower := True;
end;
Procedure TMyDataModule.ShowChildForm(PowerName: string;FormClass: TFormClass);
var
ShowForm: TForm;//这里出错
begin
if IsHoldPower(PowerName) then
begin
ShowForm := FormClass.Create(Application);
Case ShowForm.FormStyle of
fsNormal: ShowForm.ShowModal;
fsMDIChild: ShowForm.Show;
end;
end
else
MessageDlg('你没有使用此模块的权限,请跟管理员联系!',mtWarning,[mbOk],0);
end;
Procedure TMyDataModule.ShowChildForm(PowerName: string;FormClass: TFormClass);
var
ShowForm: TForm;//这里出错
begin
if IsHoldPower(PowerName) then
begin
ShowForm := FormClass.Create(Application);
Case ShowForm.FormStyle of
fsNormal: ShowForm.ShowModal;
fsMDIChild: ShowForm.Show;
end;
end
else
MessageDlg('你没有使用此模块的权限,请跟管理员联系!',mtWarning,[mbOk],0);
end;
在创建Frm_EditImport的时候我用了上面这个方法,就是通过IsHoldPower判断当前用户是否有权限使用该模块。如果我不用这个函数,直接创建:
Frm_EditImport := TFrm_EditImport.Create(Application);
Frm_EditImport.ShowModal.
的话就没问题,那问题就是出在:
var
ShowForm: TForm;//这里出错
应该怎样改呢?大家帮忙!