Delphiフォームを最小化から元に戻す

解決


ちょっぱ  2005-07-09 04:13:14  No: 16274

Delphi7 Professional
WinXP Pro SP1

やろうとしている事は、最小化されたDelphiフォームをホットキーにて元に戻すという動作です。
Delphiで作成したFormを最小化し、ShowWindowAsync(Handle, SW_RESTORE);で元に戻した場合、再度最小化することが出来なくなってしまいます。
タスクバーの部分を右クリックすると、元に戻ったことを感知できていないのか、元に戻すのメニューが残ったままで、逆に最小化するメニューは使用不可な状態になっています。
メモ帳などのDelphi以外のアプリケーションでは、普通に最小化からの復帰を繰り返すことができるのですが、Delphiフォームに限りこのような症状になっています。
どなたか原因がわかる方いらっしゃいませんでしょうか。以下がソースの一部です。

//------------------------------------------------------------------------------
// ホットキーが押された時の処理
//------------------------------------------------------------------------------
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var
  HD:HWND;
begin
  if Msg.HotKey = ID then
  begin
    ShowWindowAsync(Handle, SW_RESTORE);
    SetForeGroundWindow(Handle);
  end;
end;


シャチ  2005-07-09 04:42:55  No: 16275

Application.Restore;としてみては?


ちょっぱ  2005-07-09 10:24:46  No: 16276

シャチさんありがとうございます。
あれから色々調べて解ったのですが、DelphiのFormは全てApplicationフォームという真のメインフォームの上(?)にあるような構成なんですね。
Form1にいくらRestoreしてもIsIconic()でTrueが返ってこない訳ですね・・・。
解決しました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加