![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Положение мышки относительно ListView
Strate © (2007-05-08 23:33:00)Как получить положение курсора мыши относительно ListView?
Strate (2007-05-09 11:16:00) [1]{RASkov} © (09.05.07 2:46) [11]
Имеется ListView. В нём есть итемы, разделённые на группы по какому-то признаку. Некоторые из групп являются "активными" (т.е. например по давбл-клику что-то происходит). Вот хочу сделать Хот трэк на всю группу, т.е. при прорисовке посмотреть где мышка и изменить как-то стиль отображения всех итемов группы.
{RASkov} (2007-05-09 02:46:00) [2]> [7] Strate © (09.05.07 01:10)
Поправка для [8] :)
var P: TPoint;
begin
GetCursorPos(P);
P:=ListView.ScreenToClient(P);
так правильнее :)
> [9] Strate © (09.05.07 01:50)
> Но более лучшего придумать не могу
Лучше подумать и сделать нормально, чем извращаться с непонятно чем. Ты хоть объясни нормально, что хочешь-то.....
Германн (2007-05-09 01:52:00) [3]
> Strate © (09.05.07 01:50) [9]
>
> {RASkov} © (09.05.07 1:28) [8]
> Но что-то мне подсказывает, что ты не верным путем идешь.
> ...
>
> Мне тоже что-то это подсказывает :)
>
Особенно, если прочитать http://www.delphimaster.ru/cgi-bin/forum.pl?id=1178650355&n=5
Strate (2007-05-09 01:50:00) [4]{RASkov} © (09.05.07 1:28) [8]
Но что-то мне подсказывает, что ты не верным путем идешь....
Мне тоже что-то это подсказывает :)
Но более лучшего придумать не могу. Надо сделать хот трек одновременно нескольких итемов (группы выделенной) + вся (полностью) отрисовка у меня в OnCustomDrawItem
{RASkov} (2007-05-09 01:28:00) [5]> [7] Strate © (09.05.07 01:10)
Ну тогда [6]
+
var P: TPoint;
begin
GetCursorPos(P);
P:=ScreenToClient(P);
DEC(P.X, ListView.Left+2);
DEC(P.Y, ListView.Top+2);
......
Но что-то мне подсказывает, что ты не верным путем идешь....
Strate (2007-05-09 01:10:00) [6]{RASkov} © (09.05.07 0:40) [5]
Не, в OnCustomDrawItem мне пришлось полностью переписывать алгоритм отрисовки итемов. И хот трэк тоже особый нужен.
Johnmen (2007-05-09 00:48:00) [7]ClientToScreen, ScreenToClient
{RASkov} (2007-05-09 00:40:00) [8]> [4] Strate © (09.05.07 00:15)
> Вызываю в OnCustomDrawItem
А для чего тебе ТАМ нужно вызывать GetItemAt? Может тебе нужно HotTrackStyles настроить?
Strate (2007-05-09 00:15:00) [9]{RASkov} © (08.05.07 23:56) [3]
Вызываю в OnCustomDrawItem, в этом вся сложность. Либо надо использовать глобальные переменные.
Я бы сделал поправку на положение формы главной относительно экрана, но там (у меня имеется ввиду :) ) довольно таки сложно сделать это, + высоту заголовка надо учитывать, а где ж её взять-то?
{RASkov} (2007-05-08 23:56:00) [10]GetItemAt вызывай в OnMouseUp ListView'а с X и Y из параметров OnMouseUp'а..... или где ты это(GetItemAt) вызываешь?
Strate (2007-05-08 23:53:00) [11]В общем мне нужно корректо найти координаты мышки над ListView чтобы правильно вызвать GetItemAt Я так понимаю что в этой функции (0,0) расположен в левом верхнем углу самого LIstView'a
{RASkov} (2007-05-08 23:45:00) [12]Верхний левый угол ListView - (0,0) для экрана или для формы на которой ListView?