我正在手动执行表单,我有我需要的但想要控制FormClose事件,但无法找到有关如何执行此操作的信息,我只想从显示中创建事件和FormClose代码。 / p>
我拥有的是:
function make_form():bool;
var
frm: TForm;
begin
frm := TForm.Create(nil);
frm.Caption := 'Title';
frm.Width := 500;
frm.Height := 300;
end;
此代码是单元中的函数
我该怎么做?
答案 0 :(得分:0)
你的代码并不真实。
要在动态创建的表单中处理Close事件,您必须将事件处理程序分配给事件属性OnClose:
frm.OnClose := CloseProc;
CloseProc
应该是一个具有所需原型的某个对象(例如,主窗体)的方法
TFormMain = class(TForm)
...
procedure CloseProc(Sender: TObject; var Action: TCloseAction);
...
implementation
procedure TformMain.CloseProc(Sender: TObject; var Action: TCloseAction);
begin
//use Sender if needed
end;
答案 1 :(得分:0)
你的功能无用
在创建对象时使用try..finally。
从这样的事情开始
type
// Dummy class:
TFrmHandlers = class
// Close handlers:
class procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
implementation
.....
class procedure TFrmHandlers.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('The form will closed now');
end;
procedure make_form();
var
frm: TForm;
begin
frm := TForm.Create(nil);
try
frm.Caption := 'Title';
frm.Width := 500;
frm.Height := 300;
frm.OnClose := TFrmHandlers.FormClose;
frm.ShowModal;
finally
frm.Free;
end;
end;