![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Особенности OpenSaveDialog_Extended [Delphi, Windows]
dvk © (2005-09-28 17:48:00)Почему-то при попытке использовать свой шаблон с OpenDialog'oм пропадает левое окошко диалога с возможностью быстрого перехода по избранным папкам (мой компьютер, мои документы и т.д.).
Не мог бы кто-нибудь объяснить - почему?
GMax (2005-10-04 22:20:00) [1]упс, ошибся темой, вот здесь ещё необходимое исправление для KOL
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1128422776&n=10
Vladimir Kladov (2005-10-04 17:47:00) [2]спасибо, поправлю в следующем выпуске (наверное, уже в выходной, опять еще кое-что есть - RepeatInterval для BitBtn поправить удалось, т.е. есть уже 2 полезных изменения).
dvk (2005-10-04 08:15:00) [3]Нашёл в чём было дело. Оказалось, что структура TOpenFilename может иметь разную длину (параметр lStructSize) - 76 либо 88 байт. Я так понял, что исторически сначала было 76 байт, а с появлением новых версий Windows добавилось 3 новых параметра -
pvReserved: Pointer;
dwReserved: DWORD;
FlagsEx: DWORD;
Пока не используются шаблоны (Templates), можно смело ставить lStructSize равным 76 - будет показываться правильное окно (в Win98 - обычное, в WinMe и выше - с избранными папками). Но если используются шаблоны, то необходимо ставить lStructSize равным 88, иначе избранных папок слева не будет.
В Delphi7 для этого стоит дополнительная проверка:
if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) or { Win2k }
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion >= 4) and (Win32MinorVersion >= 90)) then { WinME }
lStructSize := SizeOf(TOpenFilename)
else
lStructSize := SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer); { subtract size of added fields }
Соответственно, декларация структуры TOpenFilename используется расширенная (с тремя дополнительными параметрами). Неплохо бы и в KOL сделать то же самое, иначе избранные папки будут и дальше пропадать с шаблонами. На сегодняшний момент lStructSize в KOL устанавливается в фиксированное значение - 76.