我是这么写的Form1.OnCloseQuery(self;false);结果出错,请问怎么写?
解决方案 »
- 客户端在运行一段时间后报“存储空间不足”
- 很奇怪的一个问题,用ADO操作ACCESS数据库怎么会只显示到1100条记录?
- 关于TDBChart的连线画图的用法(连线时,判断如果值为空就不连)
- 我怎么在TQuery的sql语句里面使用replace函数?
- 在 FORM 上,怎样实现按 Enter 键后,光标跳到下一控件,好象按 Tab 一样??
- 請大家幫個忙,操作txt流文件時候WriteBuffer的問題,代碼如下:
- delph5在win2000下开发的com在其他没有装delphi5的机器上无法注册
- 寻物启示!!!!
- 我的一个程序,在有的机器上可以运行,但在有的机器上出现:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作操作要求一个当前的记录。请问各位有没有遇到过这种情况?如何解决。谢谢。
- 请大家帮忙看看怎样改进我这个程序。
- Grid 控件里的 Cell 中的文字如何换行!??
- 如何用DELPHI采集视频的视频啊。
CanClose:Boolean;
begin
Form1.OnCloseQuery(self;CanClose);
end;但是不推荐自己调用这个函数,应该自己写一个函数,让这两个函数都调用它。
begin
do you want to do;
end;
onclick procedure;
begin
oncloseyourform;
...
end;
什么意思呢?和在click里写有什么不同?
CanClose:Boolean;
begin
Form1.OnCloseQuery(self;CanClose);
end;另,我说的另外再写一个函数调用,主要是为了防止程序的逻辑混乱,可以写成这样:
procedure TForm1.DoFinalize();
begin
//do something
end;procedure TForm1.OnCloseQuery(Sender:TObject;var CanClose:Boolean);
begin
DoFinalize();
end;procedure TForm1.OnButton1Click(Sender:TObject);
begin
DoFinalize();
end;
Form1.OnCloseQuery(self,CanClose);//注意中间是逗号
它和
Form1.OnCloseQuery(self,false);
的区别在于OnClose(Sender:TObject;var CanClose:Boolean)需要接受的第二个参数必须是一个变量。
procedure TForm1.DoFinalize();
begin
//do something
end;
这个函数是不是应该带参数?而且和OnCloseQuery的参数一样?
只要在OnClick事件中写上:self.Close; 就会自动执行OnCloseQuery中的代码。
在OnCloseQuery的事件中:
begin
if MessageDlg('确认关闭?',mtConfirmation,[mbYes,mbNo],0)=mrYes then CanClose:=true else CanClose:=false;
end;
====================
你理解得不错,如果你是想在buttononclick中关闭程序,并且防止用户直接点窗口右上方的关闭按钮来关闭程序,可以用这样:TForm1 = class(TForm)
...
private
FCanClose:Boolean;
end;implementationprocedure TForm1.OnCreate();
begin
..
FCanClose:=false;
end;procedure TForm1.OnButton1Click();
begin
FCanClose:=true;
Close;
end;procedure TForm1.OnCloseQuery(Sender:TObject;var CanClose:Boolean);
begin
if not FCanClose then begin
ShowMessage('you can not close window');
end;
CanClose:=FCanClose;
end;