Как я могу определить близкую форму по значку границы? - PullRequest
4 голосов
/ 20 июля 2011

В моей форме есть кнопки Отмена и ОК. Они оба что-то делают, а затем вызывают близкую форму. Как я могу сделать кнопку [x] в форме для вызова Cancelclick?

Ответы [ 3 ]

9 голосов
/ 20 июля 2011

Если форма отображается модально, вам просто нужно проверить значение ModalResult. Значение mrCancel указывает на то, что крест был нажат.

Я бы хотел договориться, чтобы ваши кнопки использовали свои свойства ModalResult для закрытия формы. Установите ModalResult для кнопки ОК на mrOK, а для кнопки отмены - mrCancel.

6 голосов
/ 02 августа 2011

Добавьте это в публичную декларацию вашей формы

procedure WMSysCommand(var MSG: TWMSysCommand); message WM_SYSCOMMAND;

затем добавьте метод

procedure TForm1.WMSYSCommand(var MSG:  TWMSysCommand);
begin
  if MSG.CmdType = SC_CLOSE then
  begin
     //Closing from border icon
  end;
  inherited;
end;
0 голосов
/ 20 июля 2011

Вы можете использовать события OnCloseQuery формы.

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= true;  //or not
  ButtonCancelClick(Self);
end;

Если для ваших кнопок установлены свойства modalresult, они также будут вызывать OnCloseQuery, и этот код не будет работать. В этом случае используйте ответ Дэвида.

...