Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как добратся до ToolTip в TListVIew?


Автор: MegaVolt 4.11.2006, 11:58
TListView создаётся со стилем LVS_EX_INFOTIP по умолчанию. Это значит что внутри есть встроенный ToolTip.

Доказательством этому может быть следующий код:

Код

ToolTipHandle:=SsendMessage(ListView1.Handle,LVM_GETTOOLTIPS,0,0);
SendMessage(ToolTipHandle,TTM_SETDELAYTIME,TTDT_AUTOMATIC,1);
sendmessage(ToolTipHandle,TTM_SETDELAYTIME,TTDT_AUTOPOP,5000);


который изменяет времена показа ToolTip. Изменения визуально присутствуют. Значит это действительно ToolTip.

А вот дальше начинаются проблемы. Пробую изменить тект сообщения на LPSTR_TEXTCALLBACK чтобы получить сообщение TTN_NEEDTEXT в результате ничего не получается smile

Проблема насколько я понимаю в получении структуры ToolInfo через сообщение TTM_GETTOOLINFO. Так как структура передаваемая как параметр остаётся неизменной после вызова сообщения smile

Делаю так:

Код

FillMemory(@ti,SizeOf(ti),0);
ti.cbSize:=SizeOf(ti);
ti.hwnd:=ListView1.Handle;
ti.uId:=ListView1.Handle;
sendmessage(tooltiphandle,TTM_GETTOOLINFO,0,Lparam(@ti));
ti.lpszText:=LPSTR_TEXTCALLBACK;
sendmessage(tooltiphandle,TTM_SETTOOLINFO,0,Lparam(@ti));


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

Подскажите что я делаю не так и как сделать правильно?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)