procedure TForm2.N1Click(Sender: TObject);
begin
s_xm:=DbGrideh1.SelectedField.ASstring;
with Tform1.Create(nil) do//不是很理解?
begin
showmodal;//不是很理解?
free;//不是很理解?
end;
form1.Table1.Locate('xingmin',s_xm,[]);//在程序初始化时建立form再hide用时show,此方法可行,为啥这里不行呢?
end;把Table1.Locate('xingmin',s_xm,[]);写在form1的oncreate和onshow中却作用在form2中?请指教!谢谢!
begin
s_xm:=DbGrideh1.SelectedField.ASstring;
with Tform1.Create(nil) do//不是很理解?
begin
showmodal;//不是很理解?
free;//不是很理解?
end;
form1.Table1.Locate('xingmin',s_xm,[]);//在程序初始化时建立form再hide用时show,此方法可行,为啥这里不行呢?
end;把Table1.Locate('xingmin',s_xm,[]);写在form1的oncreate和onshow中却作用在form2中?请指教!谢谢!
begin
showmodal;//不是很理解?
free;//不是很理解?
end;
是动态创建窗体,以减少资源的占用。最好写成这样: try
Form1:=TForm1.create(nil);//创建窗体,调用构造函数
Form1.showmodal; //显示为模式窗体
finally
Form1.free;//释放窗体资源,调用析构
end; form1.Table1.Locate('xingmin',s_xm,[]);//你的FORM1和FORM2是不是共用了一个TABLE
谢谢!
我有些概念不清,想继续请教:
Form1.showmodal; //显示为模式窗体。何为模式窗体?
with Tform1.Create(nil) do
begin
showmodal;//刚建的form1为何下句就释放呢?
free;//form1释放后为啥还可见呢?难道释放的不是form1?
end;
总之:创建的什么?又释放的什么呢?
begin
s_xm:=DbGrideh1.SelectedField.ASstring;
with Tform1.Create(nil) do//不是很理解?
begin
showmodal;//不是很理解?
free;//不是很理解?
end;到这里的时候,form1对象已经不存在了,执行下面的程序肯定出错啊。
form1.Table1.Locate('xingmin',s_xm,[]);//在程序初始化时建立form再hide用时show,此方法可行,为啥这里不行呢?
end;
form1.Table1.Locate('xingmin',s_xm,[]);//当然访问不到form1了
强烈建议看书先!
谢谢!
谢谢大家!很快就结贴!