2017-01-16 6 views
-1

私はDelphi 5でOpenDialogを使用しています。私の問題は、My Applicationフォームの後ろに開くことです。私は、Windowsのダイアログボックスが後ろにあるかもしれないので、次のコードwindows OpenDialogは、Delphiの他のアプリケーションのバックグラウンドで開いています。どうやって前面に持ってきますか?

if UpperCase(SmSession.ApplicationName) = 'MYAPP' then 
begin 
    Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST; 
    exit; 
end 

を使用してTOPで私のアプリケーションのフォームを設定します。申請書のコードを変更せずに、どうすれば前に出すことができますか?

これはopenDialogのに私のコードです:

EditParent.OpenDlg.InitialDir := EditParent.FDefaultDir; 
EditParent.OpenDlg.FileName := EditParent.FFileName; 

if EditParent.OpenDlg.Execute then 
Begin 
    SplitFileDir(EditParent.OpenDlg.FileName, TmpDir, TmpFile); 
    if EditParent.ShowOnlyFileName then 
    EditParent.FileName := TmpFile 
    else 
    EditParent.FileName := EditParent.OpenDlg.FileName; 
    EditParent.Directory := TmpDir; 
    EditParent.SetPeerDirectoryBrowser; 
End; 
EditParent.OpenDlg.Free; 
inherited Click; 

終了。

+0

正しいウィンドウハンドルをダイアログの所有者として使用するには、Delphi 5のダイアログコードをハックする必要があります。 –

+0

OpenDlgは無料ですか?どうしてそれをするの? – Dsm

+0

'BringWindowToTop(OpenDialog1.Handle); ' – Sami

答えて

-1

このプロパティは、アプリケーションウィンドウを常に上に維持するために使用していました。 Params.ExStyle:= Params.ExStyleまたはWS_EX_TOPMOST;

この行にはコメントがあり、次のプロパティは別のものを使用します。 Params.ExStyle:= Params.ExStyleまたはWS_EX_APPWINDOW;
Params.WndParent:= GetDesktopWindow;
それが動作します。

関連する問題