バグでしょうか?


もうすぐ中級者  2009-08-25 23:01:56  No: 35493

Form1 にボタンを配置し、ボタンが押されたら
Form2 を ShowModal で開きます。
Form2 にボタンを配置し、 SelectDirectory を呼び出すと
SelectDirectory のメニューがForm2の下に表示されて
使い物にならなくなります。
これってバグでしょうか?


Ru  2009-08-25 23:33:16  No: 35494

Delphi7
WindowXP sp2
ですが、上記現象にはならずForm2の上に
SelectDirectory のメニューが表示されています。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  Dir: string;

const
  SELDIRHELP = 1000;

begin
  Dir := 'C:\';
  if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
    Label1.Caption := Dir;

end;


もうすぐ中級者  2009-08-26 00:01:20  No: 35495

Ruさん、ごめんなさい。
Form1 の  OnActivate でフォームが最前にくるように
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
を入れてるのが原因のようです。

最前列にフォームを持ってきたままの状態では使用できないようです。

SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
で呼び出しているのですが、

SelectWindow を呼び出す前には
SetWindowPos(Form2.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
で下に持ってきて
SelectWindow を使用した後で
SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
を呼び出せばよいのでしょうか?


Ru  2009-08-26 22:31:30  No: 35496

Form1.Activateイベントに
SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);

を設定しても特に問題はなかったです。

環境の違いかな?
新規に作成しなおして問題がある部分だけ記述しても同じ現象になりますか?


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

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






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