procedure Tpayfrm.Button3Click(Sender: TObject);
begin
with datamodule5.ADOQuery1 do
begin
if modified then
begin
if messagedlg(' 数据以修改,是否保存?',mtconfirmation,[mbyes,mbno],0)=mryes then
post;
end;end;
payfrm.close;
payfrm:=tpayfrm.Create(self);
payfrm.ShowModal;
end;执行以后,新窗体可创建,可是旧窗体不消失,关闭新窗体时,旧窗体才同时消失。为什么?
如果用PAYFRM。FREE,旧窗体会消失,但关闭程序时会出错
begin
with datamodule5.ADOQuery1 do
begin
if modified then
begin
if messagedlg(' 数据以修改,是否保存?',mtconfirmation,[mbyes,mbno],0)=mryes then
post;
end;end;
payfrm.close;
payfrm:=tpayfrm.Create(self);
payfrm.ShowModal;
end;执行以后,新窗体可创建,可是旧窗体不消失,关闭新窗体时,旧窗体才同时消失。为什么?
如果用PAYFRM。FREE,旧窗体会消失,但关闭程序时会出错
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
payfrm:TForm2;
implementation{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);begin
payfrm.Free;//不管用Free还是Close都不出问题
payfrm:=TForm2.Create(self);
payfrm.Show;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
payfrm:=TForm2.Create(self);
payfrm.Show;
end;end.
payfrm := nil;
payfrm:=tpayfrm.Create(self);
payfrm.ShowModal;
FREE会出错啊
begin
Action := acFree;
payfrm := nil;
end;
即可
2.
procedure Tpayfrm.Button3Click(Sender: TObject);
begin
with datamodule5.ADOQuery1 do
begin
if modified then
begin
if messagedlg(' 数据以修改,是否保存?',mtconfirmation,[mbyes,mbno],0)=mryes then
post;
end;end;
payfrm.close;
payfrm.free;
payfrm:=tpayfrm.Create(self);
payfrm.ShowModal;
payfrm.free;
end;
不行啊。
相当于payfrm.free; payfrm:=nil;
试下2先
你在payfrm.close;之前加上两句看看
payfrm.Visible :=false;
payfrm.Update;并且好像你每次都创建了窗体对象,浪费资源,不知释放了没有
因为你用 payfrm.ShowModal;
所以其后面的代码在payfrm关闭之前都是不执行的。既:你关闭的窗口代码还没执行完,当然不会没。如果你只是不想看到可以用 payfrm.Hide;如果用你用PayFrm.Show应该是没问题的。呵呵
if assigned(payfrm) then
FreeAndNil(payFrm);
payfrm:=TForm2.Create(Application);
payfrm.Show;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
payfrm:=TForm2.Create(Application);
payfrm.Show;
end;
FREE的话,有用,但是关闭整个程序出错
TO yk1028()
的确为刷新数据,控件太多了
我要显示模式窗体啊
在ONSHOW中
PAYFRM。UPDATE?
不要刚这段代码作为类的函数,
procedure Tpayfrm.Button3Click(Sender: TObject);
begin
myfunction(PAYFRM);
end;用
procedure MyFunction(Sender: Tpayfrm);
begin
...
老大,你误解了,我的主要目的是更新窗体,不是数据:(TO firetoucher(风焱) ( )
等我TEST看
没问题呀!!!