制作活动表格关闭

时间:2016-01-31 15:20:51

标签: delphi

我正在手动执行表单,我有我需要的但想要控制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;

此代码是单元中的函数

我该怎么做?

2 个答案:

答案 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;