我的程序是mdi的,从childform1 的一个button打开childform2,然后再childform2关闭时把childform2上的变量值传递给childform1的stringgrid我这样写,在childform2的close事件写代码如下:var
s:string;
begin
try
s:='hello';
fmchildform1.stringgrid1.Cells[5,fmchildform1.stringgrid1.Row]:=s;
except
on e:exception do
begin
showmessage(e.Message);
end;
end;但是没办法传值,错误如下:
Access violation at address 004BD5FB in module 'mdiapp.exe'. Read of address 000002E0
我在sdi程序中作过类似的动作就可以。各位帮帮忙。
s:string;
begin
try
s:='hello';
fmchildform1.stringgrid1.Cells[5,fmchildform1.stringgrid1.Row]:=s;
except
on e:exception do
begin
showmessage(e.Message);
end;
end;但是没办法传值,错误如下:
Access violation at address 004BD5FB in module 'mdiapp.exe'. Read of address 000002E0
我在sdi程序中作过类似的动作就可以。各位帮帮忙。
在childform2的close事件写代码如下var
i:Integer;
begin
for i:=0 to MDIFrame.MDIChildCount-1 do
begin
if MDIFrame.MDIChildren[i] is TChildForm1 then
begin
TChildFrom1(MDIFrame.MdiChildren[i]).stringgrid1.Cells[5,TChildFrom1(MDIFrame.MdiChildren[i])..stringgrid1.Row]:='hello';
end;
end;
end;
在childform2的close事件写代码如下var
i:Integer;
begin
for i:=0 to MDIFrame.MDIChildCount-1 do
begin
if MDIFrame.MDIChildren[i] is TChildForm1 then
begin
TChildFrom1(MDIFrame.MdiChildren[i]).stringgrid1.Cells[5,TChildFrom1(MDIFrame.MdiChildren[i]).stringgrid1.Row]:='hello';
end;
end;
end;
var
i:integer;
beginMainForm.fmkhedt:=nil;
Action := caFree;
for i:=0 to MainForm.MDIChildCount-1 do
begin
if MainForm.MDIChildren[i] is Tfmprodedt then
begin
Tfmprodedt(MainForm.MdiChildren[i]).sg1.Cells[5,Tfmprodedt(MainForm.MdiChildren[i])..sg1.Row]:='hello';
end;
end;
end;
[Error] khedt.pas(275): '.' expected but ';' found
[Fatal Error] mdiapp.dpr(22): Could not compile used unit 'khedt.pas'
Tfmprodedt(MainForm.MdiChildren[i]).sg1.Cells[5,Tfmprodedt(MainForm.MdiChildren[i])..sg1.Row]:='hello';第二行错误对应最后一个end, begin与end数量相等了呀,为什么还出现这错误。如果我把上面那句去掉,或者去掉最后一个end,就可以去掉第二个错误,但是这样begin 比end 多一个。
谢谢了,哥们,我没注意看你的第二个回帖,所以出了一堆错误。