У меня есть приложение, которое состоит из формы с FormStyle, объявленной как «fsStayOnTop», так что она всегда отображается поверх всех других окон. Теперь я хотел бы временно показать другую форму, в которой пользователь может установить некоторые параметры. Эта форма также должна отображаться сверху, поэтому я изменяю свойство FormStyle основной формы на «fsNormal» и FormStyle формы, которую я хочу показать «fsStayOnTop». Когда временная форма закрывается, основная форма снова получает «fsStayOnTop».Как сделать форму всегда оставаться на вершине
Теперь форма настроек остается сверху, но только до тех пор, пока я не активирую ее одним щелчком мыши внутри формы. Когда я нажимаю на другое окно после этого, щелкнутая форма сверху, и определенный FormStyle, похоже, больше не действует. Может ли кто-нибудь помочь мне в этом?
Вот мой FormShow и FormClose mehtod:
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ScaleOpen := false;
SetForegroundWindow(TempHandle);
Form1.FormStyle := fsStayOnTop;
end;
procedure TForm3.FormShow(Sender: TObject);
begin
TempHandle := GetForegroundWindow;
OldScaleM := Form1.GetScale;
SaveChanges := False;
ScaleOpen := true;
Form1.FormStyle := fsNormal;
Form3.FormStyle := fsStayOnTop;
end;
Вы подтвердили, что, когда «FormStyle, кажется, не имеет никакого эффекта», это действительно 'fsStayOnTop', а не что-то еще? – ain
вам нужно использовать 'ShowModal', когда вы хотите показать свою форму настроек ... – whosrdaddy
Да, я использую showModal, чтобы показать его – Airogat