• ベストアンサー

Delphiで最前列にFormを表示し、フォーカス

他のアプリを操作中に、Delphiで作成したFormをフォーカスを奪わずに表示する方法を調べています。 C++Builderなら 記事:最前面に表示するが、フォーカスは奪わない方法 http://ogawa-sankinkoutai.seesaa.net/article/115187189.html で出来るようですが、Delphiならどのようにすればいいんでしょうか? Delphi XE5 Starterを使っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

windows の提供するAPI を呼び出して実現する物なので、基本的に関数名や引数設定法は同じと思うけど。 10年前にやったきりなので最近のDelphiヘルプがどのくらい親切か解らないけど、「API 呼び出し用のヘルプ」も一緒にインストールされてると思うので、そのヘルプで WindowPos , NOSENDCHANGING の単語検索すると、例文付きの説明が出てくると思うのだけど。

kihonkana
質問者

お礼

すばやい回答ありがとうございます。 WindowPosをDelphiのヘルプを検索したところ、 「このトピックには現在ドキュメントが存在しません。「ノート」を利用してこのトピックの改良について話しあうことができます。」と出てきました。 そのため WebでWindowPosを検索したところ、 http://www.geocities.jp/asumaroyuumaro/program/winapi/window/setwindowpos.html を見つけ、その中で 「|」でなく「or」と書かれているのがわかりました。 それで、 SetWindowPos( Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOSENDCHANGING or SWP_SHOWWINDOW ); としたところ、うまく目的の動作を実現することができました。

関連するQ&A