Блокировка родительского окна формы в Delphi - PullRequest
4 голосов
/ 13 октября 2011

Я пытаюсь создать простое приложение, которое показывает два окна формы. Первая, основная форма должна отображать всплывающее окно формы при нажатии на нижнюю часть. Вторая показанная форма должна отключить функциональность основной формы.

Пожалуйста, покажите простой код для этого примера.

Ответы [ 4 ]

7 голосов
/ 13 октября 2011

Попробуйте:

procedure ShowModalForm()
var 
  newForm: TNewForm;
begin
  newForm := TNewForm.Create(nil);
  try
    newForm.ShowModal;
  finally
    newForm.Free;
  end;
end;
4 голосов
/ 13 октября 2011

Другой способ создать его - вот так.

procedure TForm1.btnCreateFormClick(Sender: TObject);
var
   YourForm : TYourForm;
begin
  YourForm := TYourForm.Create(nil);
  try
    YourForm.ShowModal;
  finally
    YourForm.Free;
  end;
end;
4 голосов
/ 13 октября 2011

Самый простой способ добиться этого - показать вашу форму модально. Вызовите ShowModal, чтобы отобразить форму, и основная форма не будет отключена и не сможет получить какой-либо ввод.

0 голосов
/ 13 октября 2011

Вот некоторый шаблонный код, который демонстрирует модальное окно поведение в Delphi:

procedure TMain.Button1Click(Sender: TObject);
var
  Result: TModalResult;
begin
  { if Dialog is not in "auto-create forms" list - instantiate it }
  if not Assigned(Dialog) then
    Application.CreateForm(TDialog, Dialog);

  { MODAL forms are blocking input on per application level }
  { so the following call blocks until Dialog form closes }
  Result := Dialog.ShowModal();

  if IsPositiveResult(Result) then
  begin
    { handle if user responds with OK, Yes, etc }
    ShowMessage('Accepted');
  end
  else
  begin
    { or handle Close, Cancel, No, ... }
    ShowMessage('Cancelled');
  end;
end;

Отдельные результаты диалога были достигнуты путем назначения ModalResult свойство кнопки control в Инспекторе объектов.Для получения дополнительной информации читайте о ShowModal методе.

Вот соответствующие фрагменты кода DFM, чтобы проиллюстрировать установку свойства ModalResult:

  object btnOK: TButton
    Caption = 'OK'
    ModalResult = 1
  end
  object btnCancel: TButton
    Caption = 'Cancel'
    ModalResult = 2
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...