Form1 にボタンを配置し、ボタンが押されたら
Form2 を ShowModal で開きます。
Form2 にボタンを配置し、 SelectDirectory を呼び出すと
SelectDirectory のメニューがForm2の下に表示されて
使い物にならなくなります。
これってバグでしょうか?
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;
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);
を呼び出せばよいのでしょうか?
Form1.Activateイベントに
SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
を設定しても特に問題はなかったです。
環境の違いかな?
新規に作成しなおして問題がある部分だけ記述しても同じ現象になりますか?
ツイート | ![]() |