Перейти к содержанию
Fire Monkey от А до Я
  • 0

Вторая форма всегда над главной в FireMonkey


Aptyp

Вопрос

Если в FireMonkey поставить FormStyle в значение StayOnTop, то форма будет над всеми окнами системы, а мне надо чтобы она оставалась только лишь над главной, но пряталась под окнами других программ. Чтобы я не пробовал – ничего нормального не выходит.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
procedure MyCurrentForm.MyButtonClick(Sender: TObject);
var
  dlg: TMyModalForm;
begin
  // Create an instance of a form.
  dlg := TMyModalForm.Create(nil);

  // Configure the form. For example, give it a display name.
  dlg.Caption := 'My Modal Dialog Box';

  // Show your dialog box and provide an anonymous method that handles the closing of your dialog box.
  dlg.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      // Do something.
    end
  );
end;

Из docwiki.embarcadero.com

Ссылка на комментарий
  • 0

Решил задачу таким способом:

   if ( uMsg = WM_ACTIVATEAPP )and( fModal.Visible ) then
    SetWindowPos(FormToHWND(fModal), IfThen( wParam = 1, HWND_TOPMOST, HWND_NOTOPMOST ),
      Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );

Таким образом модальное окно (которое на самом деле не модальное) находиться всегда сверху, когда приложение активно. Когда приложение теряет фокус, окно теряет свой статус нахождения сверху, но остаётся прорисованным сверху главной формы. При всём при этом главная форма так же остаётся доступной для работы, в отличие от ShowModal.

Ссылка на комментарий
  • 0

@krapotkin 

Редактирование свойства FormStyle между StayOnTop и Normal – не подходит, так как форма в этот момент прыгает.

Видимо из-за того что в коде класса формы вызываются данные методы:

procedure TCommonCustomForm.SetFormStyle(const Value: TFormStyle);
...
begin
...
  Screen.RemoveForm(self);
...
  Screen.AddForm(self);
...
end;

 

 
Изменено пользователем Aptyp
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...