• カテゴリ Delphi の最新配信
  • RSS
  • RDF
  • ATOM

開発ブログ - ダイアログフォームに裏に行ってほしくない!

ダイアログフォームに裏に行ってほしくない!

カテゴリ : 
技術メモ » Delphi » VCL
執筆 : 
2015/2/20
Delphi VCL はフォームやダイアログを独自のフォームによって処理しているので
一般的な Windows プログラムと違う動きをする部分が結構あります。

フォームを ShowModal でダイアログとして表示しているのに、
タスクバーのアイコンをクリックすると、ダイアログがオーナーフォームの裏に隠れてしまうことがあります。
これを防ぐには以下のようなコードを入れればよいようです。

procedure TDialog1.FormCreate(Sender: TObject);
begin
  if (Owner <> nil) and (Owner is TForm) {and (fsModal in FormState)} then
    SetWindowLong(Handle, GWL_HWNDPARENT, TForm(Owner).Handle);
end;

参考にしたサイトには {} 内のコードが入っているのですが、私が試したやり方では {}内があるとうまくいきませんでした。
基本的にダイアログとして使うフォームをモーダルにしたりモーダルでなくしたりということはしないので、これでも大丈夫かな...と

[参考サイト]
[Delphi] フォームの管理を多少楽にする(くろねこ研究所)
  • コメント (0)
  • トラックバック (0)

コメントの投稿

お気軽にコメントください : 投稿されたコメントは承認後に表示されます
プロダクツ

開発ブログ

Link

AD