2009-06-23 5 views
3

の制御Z順序は、私は次のように作成されたモーダルダイアログ持っ方法:デルファイ - TOpenDialog

このフォームで
procedure TFormCompose.createParams(var Params: TCreateParams); 
begin 
    inherited createParams(Params); 
    with Params do begin 
      exStyle:=exStyle or WS_EX_APPWINDOW; 
      wndParent:=getDesktopWindow; 
    end; 
end; 

を、私はTOpenDialogのインスタンスを作成します。開いたら、メインアプリケーションウィンドウの後ろに私の最初のモーダルダイアログを送ります。

モーダルダイアログのZオーダーに影響を与えずにTOpenDialogを開く方法はありますか?

ありがとうございます!

+1

Delphi 2007を使用しているので、おそらくウィンドウの親を変更するコードを削除する必要があります。 Delphiの新しいバージョンでは、通常、以前のバージョンで親を混乱させる必要があるという問題に対処しました。 –

答えて

5

どのデルファイのバージョンを使用していますか? Delphi 2007以降では、オーバーロードされたTOpenDialog.Execute(ParentWnd:HWND)が追加されています。 Execute()を呼び出すときに、ParentWndとしてモーダルダイアログのハンドルを渡してください。

将来参照するには、デルファイのバージョンを指定してください。たとえば、Delphi 2009に適した回答は、Delphi 5を使用していた場合にはあまり役に立ちません。答えを提供する人にとって時間の無駄です。

+1

Delphi 2007.それを指摘してくれてありがとう! –

+1

ようこそ。 :-) –