Вызов события из TButton

Я пытаюсь вызвать событие "OnCloseQuery" из TButton в той же форме.

Вот код моего OnCloseQuery:

procedure TfrmAllowance.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  // prompt close query and saving of data during parent and child closing
  with dm_u.dmPayroll do
  begin
    if MessageDlg('Are you sure you want to close Setup Allowance?',
       mtConfirmation, [mbYes, mbCancel], 0) <> mrYes then
       begin
        CanClose := False;
       end
    else if cdsAllowance.State in [dsEdit, dsInsert{, dsBrowse}] then
    begin
      manpower_u.frmManpower.btnAllowances.Enabled := true;
      if MessageDlg('Do you wish to save the Setup Allowance changes?',
         mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      begin
        cdsAllowance.ApplyUpdates(0);
        if (cdsAllowance.ApplyUpdates(-1) = 0) then
        begin
          cdsAllowance.Refresh;
        end;
      end;
    end;
    cdsAllowance.Active := False;
  end;
end;

А вот код моего TButton для вызова вышеуказанной процедуры, и я не знаю, что добавить в параметры:

FormCloseQuery(?????????);

Я не очень знаком с вызовом события, но быстрая подсказка помогла бы мне разобраться.

Всего 1 ответ


Вызывать событие OnCloseQuery очень мало смысла, потому что он мало что делает. Но если вы действительно хотите позвонить, используйте что-то вроде этого:

procedure TForm1.Button1Click(Sender: TObject);
var
  CanClose: boolean;
begin
  CanClose := True;
  FormCloseQuery(Self, CanClose);
  if CanClose then
    // whatever
end;

Но я скорее подозреваю, что вы действительно хотите сделать, это:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

Это будет вызывать OnCloseQuery косвенно, и он будет выполнять всю другую обработку, необходимую для закрытия формы.


Есть идеи?

10000