Visible
формы отображения действительно ложно, и вызов Hide
ничего не делает, когда приложение свернуто, поскольку оно скрыто приложением как часть механизма минимизации.
Кодовые вызовы ShowOwnedPopups
с первым «False» в качестве «bShow» во время сворачивания приложения, а затем с «True» в качестве «bShow» во время восстановления приложения.Поскольку функция отображает все окна, которые были скрыты предыдущим вызовом, изменение видимости формы между ними не имеет никакого эффекта.
Теперь посмотрите эту цитату в разделе замечаний документации по функции,
если всплывающее окно скрыто с помощью функции ShowWindow, последующий вызов ShowOwnedPopups с параметром fShow, установленным в значение TRUE, не приводит к отображению окна
Итак, одинРешением может быть скрытие формы до того, как приложение ее скрывает, чтобы она не отображалась при восстановлении.Но тогда мы должны знать, должна ли отображаемая форма на самом деле быть скрытой или показанной при восстановлении.Этого можно достичь, поместив свойство в форму отображения или, возможно, с помощью глобальной переменной.В приведенном ниже поле «ShouldBeVisible» является гипотетическим свойством, которое возвращает значение true, если мы хотим отображать информацию:
type
TForm1 = class(TForm)
..
private
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
...
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if (Msg.CmdType = SC_MINIMIZE) and Assigned(Form2) and Form2.Visible then
Form2.Hide;
inherited;
if (Msg.CmdType = SC_RESTORE) and Assigned(Form2) and Form2.ShouldBeVisible then
Form2.Show;
end;