我想在某一窗体關閉時,實現某一行動.
procedure TForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin;;;;;;;;;;;;;;;end;如果點擊關閉按鈕 沒問題.
但如果程序最小化時,右鍵關閉,此代碼不執行.是什麽原因?如何讓程序關閉前執行以上代碼?
procedure TForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin;;;;;;;;;;;;;;;end;如果點擊關閉按鈕 沒問題.
但如果程序最小化時,右鍵關閉,此代碼不執行.是什麽原因?如何讓程序關閉前執行以上代碼?
解决方案 »
- 找个话题放分
- Delphi如何生成最小文件的Exe?
- 动态创建treeview的双击事件怎么写,急,在线等
- 关于Form 的close问题?
- 在delphi5.0下写的代码,我在delphi6.0里面运行,总是说null无效,怎么原因
- 大家来讨论一下市面上DELPHI图书的问题,希望各位朋友来顶一下
- ftp的问题
- 帮忙看看这句SQL语句有什么错
- SELECT * FROM mytable order by IndexNum where (IndexNum%100=0) , 那里有问题?
- taozc(陶),windflow(我的未来不是梦),多谢你们的函数,一点小分...
- 那里可以下在elib的完全版,我被他害惨了
- 编写网络程序时,如何处理两块网卡速度不同。
begin;;;;;;;;;;;;;;;end;
上面的代码都会执行
不信的话,你可以加上代码
ShowMessage('退出');试试我估计你是其它的地方出现了错误
达不到预期的结果
那如何讓程序判斷是強行中斷,而實現代馬? My_first(海浪):
“action:=cafree“ 好像在屬性欄内添加不進去。
我剛試過,沒有執行!
好象可以执行啊!?
写在closequery试试!!
begin
form2.m2adotable2.open;
case num of
0: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[0].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end; 1: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[1].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
.........................................
end;
protected
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
procedure TMainForm.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_CLOSE:
begin
FormClose(Self,);
end else inherited;
end;
end;一切OK了!
begin
showmessage('aaaa');
end;關閉程序,也未執行!
我用ALT+F4 關閉程序,代碼還是會執行的,而右鍵關閉的快捷方式也是ALT+F4,
但不執行.哇,快瘋了!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
{.....}
private
{.....}
protected
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{.....}
end;...implementation
...procedure TMainForm.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_CLOSE:
begin
FormClose(Self,);
end else inherited;
end;
end;...你明白了?
我試過了 不行。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, DBCtrls, Mask, Grids, DBGrids,
ComCtrls, Menus, DB, ADODB, jpeg, OleCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
Label1: TLabel;
Label2: TLabel;
m1DBEdit1: TDBEdit;
m1DBEdit2: TDBEdit;
m1DBEdit5: TDBEdit;
m1DBEdit4: TDBEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
m1DBImage1: TDBImage;
Label6: TLabel;
m1DBEdit6: TDBEdit;
Label7: TLabel;
SpeedButton5: TSpeedButton;
m1DBEdit7: TDBEdit;
DBText1: TDBText;
Label8: TLabel;
DBText2: TDBText;
Label9: TLabel;
Panel5: TPanel;
Panel6: TPanel;
SpeedButton6: TSpeedButton;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
MainMenu1: TMainMenu;
Panel12: TPanel;
N5: TMenuItem;
N6: TMenuItem;
N4: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Edit1: TMenuItem;
N10: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N18: TMenuItem;
N20: TMenuItem;
N1: TMenuItem;
SpeedButton3: TSpeedButton;
N2: TMenuItem;
m1ADOConnection1: TADOConnection;
m1ADOTable1: TADOTable;
m1DataSource1: TDataSource;
OpenDialog1: TOpenDialog;
Panel10: TPanel;
Panel11: TPanel;
Panel14: TPanel;
Panel13: TPanel;
Panel15: TPanel;
Panel16: TPanel;
Panel17: TPanel;
Panel18: TPanel;
Panel19: TPanel;
Panel20: TPanel;
Panel21: TPanel;
Panel22: TPanel;
Panel23: TPanel;
DBGrid1: TDBGrid;
m1ADOTable1DSDesigner: TWideStringField;
m1ADOTable1DSDesigner2: TWideStringField;
m1ADOTable1DSDesigner3: TWideStringField;
m1ADOTable1DSDesigner4: TWideStringField;
m1ADOTable1DSDesigner5: TFloatField;
m1ADOTable1DSDesigner6: TFloatField;
m1ADOTable1DSDesigner7: TFloatField;
m1ADOTable1DSDesigner8: TBlobField;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
m1DBEdit3: TDBEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure fsd1Click(Sender: TObject);
procedure fsdafg1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure m1DBImage1DblClick(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure N6Click(Sender: TObject);
procedure m1ADOTable1AfterPost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
num:integer;
implementationuses Unit4, Unit7, Unit2, Unit8, Unit5, Unit6, Unit9;{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2.m2adotable2.open;
case num of
0: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[0].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end; 1: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[1].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
2: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[2].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
3: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[3].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end; 4: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[4].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
end; Form2.Close;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, DBCtrls, Mask, Grids, DBGrids,
ComCtrls, Menus, DB, ADODB, jpeg, OleCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
Label1: TLabel;
Label2: TLabel;
m1DBEdit1: TDBEdit;
m1DBEdit2: TDBEdit;
m1DBEdit5: TDBEdit;
m1DBEdit4: TDBEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
m1DBImage1: TDBImage;
Label6: TLabel;
m1DBEdit6: TDBEdit;
Label7: TLabel;
SpeedButton5: TSpeedButton;
m1DBEdit7: TDBEdit;
DBText1: TDBText;
Label8: TLabel;
DBText2: TDBText;
Label9: TLabel;
Panel5: TPanel;
Panel6: TPanel;
SpeedButton6: TSpeedButton;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
MainMenu1: TMainMenu;
Panel12: TPanel;
N5: TMenuItem;
N6: TMenuItem;
N4: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Edit1: TMenuItem;
N10: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N18: TMenuItem;
N20: TMenuItem;
N1: TMenuItem;
SpeedButton3: TSpeedButton;
N2: TMenuItem;
m1ADOConnection1: TADOConnection;
m1ADOTable1: TADOTable;
m1DataSource1: TDataSource;
OpenDialog1: TOpenDialog;
Panel10: TPanel;
Panel11: TPanel;
Panel14: TPanel;
Panel13: TPanel;
Panel15: TPanel;
Panel16: TPanel;
Panel17: TPanel;
Panel18: TPanel;
Panel19: TPanel;
Panel20: TPanel;
Panel21: TPanel;
Panel22: TPanel;
Panel23: TPanel;
DBGrid1: TDBGrid;
m1ADOTable1DSDesigner: TWideStringField;
m1ADOTable1DSDesigner2: TWideStringField;
m1ADOTable1DSDesigner3: TWideStringField;
m1ADOTable1DSDesigner4: TWideStringField;
m1ADOTable1DSDesigner5: TFloatField;
m1ADOTable1DSDesigner6: TFloatField;
m1ADOTable1DSDesigner7: TFloatField;
m1ADOTable1DSDesigner8: TBlobField;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
m1DBEdit3: TDBEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure fsd1Click(Sender: TObject);
procedure fsdafg1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure m1DBImage1DblClick(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure N6Click(Sender: TObject);
procedure m1ADOTable1AfterPost(DataSet: TDataSet);
private
{ Private declarations }
protected
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;var
Form1: TForm1;
num:integer;
implementationuses Unit4, Unit7, Unit2, Unit8, Unit5, Unit6, Unit9;{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2.m2adotable2.open;
case num of
0: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[0].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end; 1: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[1].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
2: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[2].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
3: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[3].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end; 4: begin
form2.m2adotable2.edit;
form2.m2adotable2.Fields[4].AsString:='0';
form2.m2adotable2.post;
form2.m2adotable2.Close;
end;
end; Form2.Close;end;
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
var CloseAction:TCloseAction;
begin
case Message.CmdType of
SC_CLOSE:
begin
CloseAction := caNone;
FormClose(Self,CloseAction);
end else inherited;
end;
end;
{pulished fields}
private
{ Private declarations }
protected
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit1;procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
var CloseAction:TCloseAction;
begin
case Message.CmdType of
SC_CLOSE:
begin
CloseAction := caNone;
Form1.FormClose(Form1,CloseAction);
end else inherited;
end;
end;
放在那邊?
我在事件框内放不進去
可我加了':'還是不行啊
type
TForm2 = class(TForm)
放在Form2所在单元。
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
protected
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit1;{$R *.dfm}procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_CLOSE:
begin
ShowMessage('Closed Form2 by system!');
inherited;
end else inherited;
end;
end;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ShowMessage('Closed Form2 by self!');
CanClose := TRUE;
Form1.Close;//这句比较关键!!
end;end.
{------------------------ Form1---------------------- }
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
protected
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
SC_CLOSE:
begin
ShowMessage('Closed Form1 by system!');
inherited;
end else inherited;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Closed Form1 by self!');
end;end.
我的程序時這樣的:
form2為主窗口(一個登陸窗口,登陸成功后,我將它隱藏),登陸進入
form1内.
所以關閉程序時是關閉form1。
在procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2.close;
end;