開発環境:Delphi XE(初代)
Form1(親フォーム)から、Form2〜5をForm??.Showにて表示させています。
表示されたフォームを全て常に最前列に配置しておきたいのですが
うまくいきません。
各フォームのFormStyleをfmStayOnTopにしてみましたが、
Form1(親フォーム)は常に最前列に来るものの、
ほかのフォームは別プログラムのウィンドウに隠れてしまいます。
(Form1〜5のどれかをアクティブにすると全て前面にきます)
タイマーとsetwindowpos関数を組み合わせて使ってみましたが、
完ぺきではなく、時々フォームが隠れてしまいます。
何か適切な方法はないでしょうか?
Windows的にできなくないですか?
子フォームTForm2の親ウィンドウをデスクトップに指定してあげればForm1の呪縛から解放することはできます。
StayOnTopもデスクトップレベルになります。
private
procedure CreateParams(var Params: TCreateParams); override;
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := GetDesktopWindow;
end;
>とま さん
提示して頂いたコードで、ほぼ満足のいく結果を得ることが出来ました。
子フォームをタスクバーに表示させる手法が使えるのですね。
大変参考になりました。
ツイート | ![]() |