Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вид диалога открытия файлов [D7, WinXP]


Charly22 ©   (2005-09-12 17:46:00) 

Добрый день!
От клиента поступило пожелание, чтобы при вызове диалога открытия файлов он сразу видел содержимое окна в виде таблицы. Не хочется ему каждый раз нажимать кнопку меню "Вид" и выбирать пункт "Таблица".
Подскажите, плз., как я могу это сделать? Я полагаю, что надо смотреть в сторону стиля окна со знначением LVS_REPORT. Но как присвоить этот стиль, я затрудняюсь пока.
Или, может, как-то можно сэмулировать выбор пункта "Таблица" в меню "Вид"?


Charly22   (2005-09-12 21:33:00) [1]

Спасибо за помощь!


y-soft   (2005-09-12 20:59:00) [2]

>Charly22   (12.09.05 20:46) [3]

Но где его посмотреть, не знаю. :-((

Посмотрите код TOpenPictureDialog - так это делается в Delphi...

Ну и в [2] я привел Вам практически полный пример, как сделать то, что стандартными средствами сделать невозможно...

Конкретно для диалогов открытия/сохранения файлов идентификаторы встроенных контролов можете посмотреть с помощью любого просмотрщика ресурсов в Comdlg32.dll ресурсы типа RT_DIALOG 1536 (старый стиль), 1547 (современный стиль) и 1552 (современный стиль с доп. панелью выбора)


Charly22   (2005-09-12 20:46:00) [3]

Спасибо!
Хоть немного прояснилась ситуация.
Я почитал MSDN. Но все равно осталось непонятным, что и в каком порядке делать. Мне гораздо легче понять на каком-нибудь примере. Пусть даже в этом примере кастомизируется какой-то другой элемент диалога.
Но где его посмотреть, не знаю. :-((


y-soft   (2005-09-12 20:20:00) [4]

Если сильно разбираться нет желания (все равно в конце-концов увидите, что легального способа добиться желаемого не предусмотрено), то подсказка:

В событии OnShow можете получить Handle диалога
Далее, используя тот факт, что встроенный ListView диалога имеет идентификатор 1120 (не факт, что так будет и в будущих версиях Windows!), можете получить хендл окна ListView и принудительно послать ему команду перейти в нужный режим отображения.

Примерно так:


const
 LVID = 1120;
var
 lvHandle : HWND;
begin
 with Sender as TCommonDialog do
   lvHandle := GetDlgItem(Handle,LVID);
 if lvHandle <> 0 then
   SendMessage(lvHandle, LVM_SETVIEW, LV_VIEW_DETAILS, 0);
end;


Еще вариант: команду можно послать непосредственно кнопке на TOOLBAR (его ID 1088), так будет даже правильнее, т.к. точно неизвестно, какие действия происходят при выборе табличного режима кроме перевода в этот режим отображения ListView...

Способы по большому счету хакерские


y-soft   (2005-09-12 19:38:00) [5]

Почитайте про кустомизацию диалогов Windows:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/aboutcommondialogboxes/customizingcommondialogboxes.asp


Наверх

Титульная страница Поиск, карта сайта Написать письмо