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

Вниз

Как отловить двойной клик на заголовке 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
2-1123824025
rts111
2005-08-12 09:20
2005.09.18
Как вызвать такой диалог?


14-1124430978
syte_ser78
2005-08-19 09:56
2005.09.18
Харьковчане, ау!!!


5-1098760190
Kair()
2004-10-26 07:09
2005.09.18


14-1124489428
TG
2005-08-20 02:10
2005.09.18
КОМПИЛЯТОР


2-1123673314
Xmen
2005-08-10 15:28
2005.09.18
QuickReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский