−トップへ−

フォームを常に一番前に表示させるには

 通常いくつかのソフトを起動させておき,1つのソフトをアクティブにすると,他のソフトは後に隠れてしまいます。しかしときには,常に手前に表示させて おきたいと思うことがあります。
 
 私の作成したソフトの中の「写真プチ加工」では,画像をドラッグアンドドロップすることで画像を開くことができるのですが,それが後に隠れてしまうと,ド ラッグアンドドロップできなくなります。そのため,この機能を付け,画像をドラッグアンドドロップすることができるようにしました。

方法

常に手前に表示するには,プログラムコードに以下の1行を書き込むだけ です。
 setwindowpos(handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE or SWP_NOACTIVATE);
また,手前表示を解除するには,以下の1行を書き込むだけです。
 setwindowpos(handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE or SWP_NOACTIVATE);

用例

例えば,フォームにボタンを2個作成し,次のように記述します。

procedure TForm1.Button1Click(Sender: TObject);
begin
 setwindowpos(handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE or SWP_NOACTIVATE);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 setwindowpos(handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE or SWP_NOACTIVATE);
end;

 これを実行して,「Button1」を押すと,他のフォームをクリック しても,このフォームは他のフォームに隠れることなく常に表示されています。
 
 その後,「Button2」を押すと,他のフォームの後に隠れるようになります。

−トップへ−