Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.27;
Скачать: CL | DM;

Вниз

Почему то не вызывается событие OnShow компонента TOpenDialog   Найти похожие ветки 

 
Anthony68   (2013-02-01 09:23) [0]

Здравствуйте! Столкнулся с такой непонятной ситуацией:
Использую Delphi 2007.
На новую, совершено пустую форму кидаю (не мняя никаких параметров по умолчанию) 2 компонента:

1) Диалог TOpenDialog, в его событие OnShow вставляю строку:
 Application.MessageBox("Диалог открылся...", "Сообщение", mb_IconInformation);


2) Кнопку TButton, в её событие OnClick записываю:
 OpenDialog1.Execute;


Компилирую программу. Запускаю под Windows 7 - сообщение, внесённое в метод OnShow - не выдаётся, пробовал использовать отладчик - в OnShow вообще не заходит....
Запускаю этот же EXE-шник под Windows XP (точнее под эмулятором XP, поскольку у меня на компьютере установлена Windows 7) - всё работает!
Сообщение "Диалог открылся..." - появляется на экране...

В чём причина?...


 
O'ShinW ©   (2013-02-01 09:39) [1]

1. На классике, без Аэро, и прочего - работает?
2. options ofOldStyleDialog = ?


 
Rouse_ ©   (2013-02-01 10:46) [2]

Потому что на семерке вместо TOpenDialog вызывается TFileOpenDialog который не перекрывает OnShow.


 
Rouse_ ©   (2013-02-01 10:49) [3]

Хотя вообще странно, судя по коду при перекрытом событии OnShow должен вызываться стандартный диалог.

 if (Win32MajorVersion >= 6) and UseLatestCommonDialogs and (Template = nil) and
    not (Assigned(FOnIncludeItem) or Assigned(FOnClose) or Assigned(FOnShow)) then
 begin
   // This requires Windows Vista or later
   if Func = @GetOpenFileName then
     FileDialogWrapper := TFileOpenDialogWrapper.Create(Self)
   else
     FileDialogWrapper := TFileSaveDialogWrapper.Create(Self);

   try
     Result := FileDialogWrapper.Execute(ParentWnd);
   finally
     FileDialogWrapper.Free;
   end;
   Exit;
 end;


Проверь у себя реализацию функции:
function TOpenDialog.DoExecute(Func: Pointer; ParentWnd: HWND): Bool;


 
O'ShinW ©   (2013-02-01 12:01) [4]


> Использую Delphi 2007.

почему то показалось просто 7.
На 7 под win7 при
> классике, без Аэро, и прочего

- работает.

а вызывается в двух случаях - по мессаджам TWMInitDialog и CDN_INITDONE
до CDN_INITDONE может не дойти, если
(Message.Msg = WM_INITDIALOG) and not (ofOldStyleDialog in Options) then Exit


 
Anthony68   (2013-02-01 14:54) [5]

Rouse_, текст функции DoExecute соответствует тому, что Вы привели.
O"ShinW, options ofOldStyleDialog = False или Truу - это ничего не меняет.
Под Windows 7 (неважно Aero или нет) - OnShow - не вызывается. Тот же EXE файл запущенный под Windows XP - вызывает OnShow.


> а вызывается в двух случаях - по мессаджам TWMInitDialog
> и CDN_INITDONEдо CDN_INITDONE может не дойти, если  (Message.
> Msg = WM_INITDIALOG) and not (ofOldStyleDialog in Options)
> then Exit


Это - не знаю как использовать... Помогите пожалуйста.



Страницы: 1 вся ветка

Текущий архив: 2013.10.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
1-1317227566
sniknik
2011-09-28 20:32
2013.10.27
Ситуация... Citrix and TPrinter поддержка "отображаемых"


2-1359636319
Scott Storch
2013-01-31 16:45
2013.10.27
Где взять координаты домов всех улиц населенных пунктов


6-1269852337
Сварт
2010-03-29 12:45
2013.10.27
Нужен программист за деньги на 10 минут


2-1359654647
berrimor
2013-01-31 21:50
2013.10.27
координаты второго монитора


15-1368785148
Дмитрий С
2013-05-17 14:05
2013.10.27
Продление SSL сертификата веб-сервера.