2017-01-15 23 views
1

TFileOpenDialogとTOpenDialogのVclテーマを無効にする方法は?Delphi。 TFileOpenDialogとTOpenDialogのVclテーマを無効にする方法

私は

procedure TForm1.FormCreate(Sender: TObject); 
var 
    chosenDirectory: String; 
    openDialog : TFileOpenDialog; 
begin 

    TStyleManager.Engine.RegisterStyleHook(TFileOpenDialog, TStyleHook); 

    chosenDirectory:=''; 

    try 
    openDialog:=TFileOpenDialog.Create(Self); 
    openDialog.Options := [fdoPickFolders]; 
    // var 2 
    // Not works 
    //TStyleManager.Engine.RegisterStyleHook(TFileOpenDialog, TStyleHook); 

    if openDialog.Execute then 
     chosenDirectory:=openDialog.FileName; 
    finally 
    openDialog.Free; 
    end; 
end; 

を試みるが、それは動作していません。 私はバリエーション2を試してみます。それはあまり効果がありません。

+2

試してみてください**後**リソース取得後、以前ではありません。ありがとう。 –

答えて

2

FileOpenDialogはVCLで実装されるのではなく、システムウィンドウのダイアログであるため動作しません。クラス名に基づいてシステムフックを追加する必要があります。さらに、このダイアログのすべてのWindowsコントロールのクラス名にフックを追加する必要があります。

このようなものを試してみてください。これはすべてのシステムダイアログに影響することに注意してください。

TStyleManager.Engine.RegisterSysStyleHook('#32770', TSysStyleHook); 
    TStyleManager.Engine.RegisterSysStyleHook('ReBarWindow32', TSysStyleHook); 
    TStyleManager.Engine.RegisterSysStyleHook('Static', TSysStyleHook); 
    TStyleManager.Engine.RegisterSysStyleHook('Edit', TSysStyleHook); 
    TStyleManager.Engine.RegisterSysStyleHook('ScrollBar', TSysStyleHook); 
    TStyleManager.Engine.RegisterSysStyleHook('ToolbarWindow32', TSysStyleHook); 
    TStyleManager.Engine.RegisterSysStyleHook('ComboBox', TSysStyleHook); 
+0

ありがとう。それは仕事です))) – VeryBadUser

7

共通ダイアログのスタイリングを無効にする適切な方法は、TStyleManager.SystemHooks財産のshDialogs要素を削除しています。

+1

これは将来の互換性はありません。 TStyleManagerでSystemHooks:= SystemHooks - [shDialogs];のようなものにする必要があります。 –

関連する問題