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

Вниз

Как отловить двойной клик на заголовке ListView возле разделителя   Найти похожие ветки 

 
MegaVolt ©   (2005-07-27 10:20) [0]

Как отловить двойной клик на заголовке ListView возле разделителя колонок? По которому происходит изменение размераколонки так чтобы влезли все строки? В виртуальном режиме он работает не так как хотелось бы :(

Подскажите как отловить это нажатие и вставить свой обработчик.

Заранее благодарен


 
alpet ©   (2005-07-27 10:27) [1]

MegaVolt ©   (27.07.05 10:20)
Нет такого события (контрол сам реагирует на обычный WM_LBUTTONDBLCLK). Так что тебе надо действовать аналогичным способом - найти графические позиции каждого разделителя, и отрабатывать двойной клик по хидеру в этих позициях.


 
MegaVolt ©   (2005-07-27 10:37) [2]

> найти графические позиции каждого разделителя, и отрабатывать двойной клик по хидеру в этих позициях.

Т.е. обрабатывать все события WM_LBUTTONDBLCLK и те что меня устраивают уничтожать Dispatch?


 
MegaVolt ©   (2005-07-27 10:46) [3]

Попробовало отловить. Не ловится :( От самих данных ловится а от заголовков невозникает :(


 
Leonid Troyanovsky ©   (2005-07-27 11:49) [4]


> Попробовало отловить. Не ловится :( От самих данных ловится
> а от заголовков невозникает :(


Заголовки - это, видимо, header control
(его хендл можно узнать - LVM_GETHEADER).
А событие - HDN_DIVIDERDBLCLICK, в форме WM_NOTIFY.
Посылается паренту (хидера), т.е. листвью.
--
Regards, LVT.


 
MegaVolt ©   (2005-07-27 12:01) [5]

Ловлю так:
Что не так?


 TListView_ = class(TlistView)
   private
     procedure W123(var Message: TWMNOTIFY); message WM_NOTIFY;
 end;

procedure TListView_.W123(var Message: TWMNOTIFY);
begin
 if Message.NMHdr^.code=HDN_DIVIDERDBLCLICK then ShowMessage("123");
end;


 
MegaVolt ©   (2005-07-27 12:03) [6]

Ловлю так:
Что не так?


 TListView_ = class(TlistView)
   private
     procedure W123(var Message: TWMNOTIFY); message WM_NOTIFY;
 end;

procedure TListView_.W123(var Message: TWMNOTIFY);
begin
 if Message.NMHdr^.code=HDN_DIVIDERDBLCLICK then ShowMessage("123");
end;


 
Leonid Troyanovsky ©   (2005-07-27 13:36) [7]


> MegaVolt ©   (27.07.05 12:03) [6]
> Ловлю так:
> Что не так?


Видимо, для твоей системы, надо HDN_DIVIDERDBLCLICKW.

--
Regards, LVT.


 
MegaVolt ©   (2005-07-27 13:48) [8]

Ура-а-а-а-а-а заработало :)

А что значит фраза "для моей системы"? Есть шанс что под другой виндой работать не будет?


 
Leonid Troyanovsky ©   (2005-07-27 14:06) [9]


> MegaVolt ©   (27.07.05 13:48) [8]
> А что значит фраза "для моей системы"? Есть шанс что под
> другой виндой работать не будет?


Проверять в 9х лениво :)
Но, о чем-то борланды задумывались, делая
HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
Т.е., лучше определить юникодность системы и
действовать в зависимости от.

--
Regards, LVT.


 
MegaVolt ©   (2005-07-27 14:20) [10]

Leonid Troyanovsky
так я не планирую в юниксах работать. Мне бы в виндах и хватит.
HDN_DIVIDERDBLCLICKW он для всех Win работает?

Спасибо за помощь.
Низкий поклон специалисту :)


 
MegaVolt ©   (2005-07-27 14:27) [11]

Leonid Troyanovsky
так я не планирую в юниксах работать. Мне бы в виндах и хватит.
HDN_DIVIDERDBLCLICKW он для всех Win работает?

Спасибо за помощь.
Низкий поклон специалисту :)


 
Leonid Troyanovsky ©   (2005-07-27 14:39) [12]


> MegaVolt ©   (27.07.05 14:20) [10]
> так я не планирую в юниксах работать. Мне бы в виндах и
> хватит.
> HDN_DIVIDERDBLCLICKW он для всех Win работает?


Дык, я немного про другое (не про юниксоидность).
Я не знаю, в каких версиях Windows требуется
HDN_DIVIDERDBLCLICKA. Скорее всего, оное зависит
от версии тех библиотек общих контролов, которые
используются в системе.
Пробывал в 2003 сервер, 98: HDN_DIVIDERDBLCLICKW -
нормально. 95 у меня нет под рукой.

На самый худой случай можно проверять оба значения
(интервалы не перекрываются).

Кстати, в твоем коде пропущен inherited.

--
Regards, LVT.


 
MegaVolt ©   (2005-07-27 14:50) [13]

>Кстати, в твоем коде пропущен inherited.
Так я специально его не вставил. Если его вставить то колонки выравниваются автоматом но не так как я хочу. Потому я сам их обработаю а сообщение дальше не пускаю.



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

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

Наверх




Память: 0.5 MB
Время: 0.058 c
1-1125061067
Aleksandr.
2005-08-26 16:57
2005.09.18
С чем может быть связана показ меню не в той кодировке?


14-1124614933
Olyanka
2005-08-21 13:02
2005.09.18
Ерунда с буфером обмена


2-1123756991
Гость22
2005-08-11 14:43
2005.09.18
Как узнать, какая клавиша нажата в DBNavigator?


14-1124667340
Zer0
2005-08-22 03:35
2005.09.18
Quake 3 Engine Sources GPL ed


3-1123162846
Sansy
2005-08-04 17:40
2005.09.18
Запрос на объединенние таблиц под разными алиасами