2017-01-15 2 views
1

Как отключить темы Vcl для TFileOpenDialog и TOpenDialog?Delphi. Как отключить Vcl темы для TFileOpenDialog и TOpenDialog

Стараюсь

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

Try приходит ** после ** ресурс получение, не ранее. –

ответ

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

Правильный способ отключить стилизации общих диалогов удаление shDialogs элемента TStyleManager.SystemHooks собственности.

TStyleManager.SystemHooks := [shMenus, shToolTips]; 
+1

ну ... это не совместимо с будущей, вы знаете. Должно быть что-то вроде 'с TStyleManager do SystemHooks: = SystemHooks - [shDialogs];' –

Смежные вопросы