Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.10.27;
Скачать: [xml.tar.bz2];

Вниз

Почему то не вызывается событие 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;
Скачать: [xml.tar.bz2];

Наверх





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


15-1368622352
картман
2013-05-15 16:52
2013.10.27
очиститель воздуха


1-1317311342
nikfel
2011-09-29 19:49
2013.10.27
Как отловить перемещение объекта


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


2-1359632987
SSS
2013-01-31 15:49
2013.10.27
Перерисовка компонентов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский