![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ListView и позиция курсора.
koha © (2007-10-15 19:19:00)Помогите. Как определить позицию курсора в ListView? Необходимо такая работа, допустим в одной из колонок ListView (vsReport) при наведении курсора строка текста подсвечавалась или выделялась, например, как это можно сделать для TLabel при методе onMouseMove onMouseLeave?
koha (2007-10-17 17:25:00) [1]Обещаю болеше не мучать никого вопросами по этому поводу уже все-таки разобрался.
koha (2007-10-17 17:04:00) [2]> [17] clickmaker © (17.10.07 16:42)
> чукча не читатель? :)
>
> [15] clickmaker © (17.10.07 14:13)
>
> procedure UpdateItems(FirstIndex, LastIndex: Integer);
>
> Оно само дернет LVAdvancedCustomDrawItem именно для 5-й
> строки
- Чукчи сдесь ни причем, вопрос посуществу. Вот смотри что получается допустим что порисовать нужно только 3-й колонке а в 1,2-й нет, но вот курсор попал на первую колонку и сделал клик и тут событие LVAdvancedCustomDrawItem которое все прорисует, как же мне ловить нужную ячейку в обработчике?
clickmaker (2007-10-17 16:42:00) [3]
> именно текст в 5-й строке 3-й колонке, а другие элементы
> пропустить
чукча не читатель? :)
[15] clickmaker © (17.10.07 14:13)
procedure UpdateItems( FirstIndex, LastIndex: Integer);
Оно само дернет LVAdvancedCustomDrawItem именно для 5-й строки
koha (2007-10-17 16:12:00) [4]Хорошо, с вопросам по поводу как что расчитать: позицию курсора, в какой колонке (ячейке) уже нет.
Вот допусим все уже расчитал, что курсор находится в в пятой строке 3-й колонке, а как же в LVAdvancedCustomDrawItem мне прорисовать именно текст в 5-й строке 3-й колонке, а другие элементы пропустить, как определить, что функция именно этот элемент сейчас будет прорисовывать, там может быть есть какой-нибудь перечислитель? По sender или Item?
clickmaker (2007-10-17 14:13:00) [5]
> а мне нужно при наведении курсора перерисовывалась нужная
> ячейка
так а самому пнуть листвью, чтобы перерисовался?
Даже метод такой есть
procedure UpdateItems(FirstIndex, LastIndex: Integer);
ЗЫ. Когда уже хелп начнем читать чутка внимательней?
koha (2007-10-17 14:11:00) [6]> [13] Palladin © (17.10.07 13:48)
> В этой проседуре можно получить Mouse.CursorPos, а потом
> нужно слить два ответа воедино [3] и [11]
- это уже понятно позиция курсора минус клиентская часть = позиция курсора в клиентская часть. Но вот LVAdvancedCustomDrawItem перечисляет ячейки или елементы и перерисовывает, но как определить мне нужную ячейку или элемент? Да и вообще под необходимую мне задачу LVAdvancedCustomDrawItem не подходит так как LVAdvancedCustomDrawItem перерисовывает (событие) только при клике по нему, а мне нужно при наведении курсора перерисовывалась нужная ячейка или элемент.
Palladin (2007-10-17 13:48:00) [7]В этой проседуре можно получить Mouse.CursorPos, а потом нужно слить два ответа воедино [3] и [11]
koha (2007-10-17 13:25:00) [8]procedure TForm1.LVAdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
В этой проседуре через какое свойство перечисляются колонка строка или как там ее ечейка которую обрабатывает?
clickmaker (2007-10-17 12:07:00) [9]
> [10] koha (17.10.07 12:04)
ну так переведи
ScreenToClient() на что?
koha (2007-10-17 12:04:00) [10]> [9] clickmaker © (17.10.07 11:58)
>
> > [8] koha (17.10.07 11:53)
>
> а до Ф1 не дотянуться?
>
> GetCursorPos() + ListView.GetItemAt()
Я может ошибаюсь GetCursorPos() возвращает позицию относительно экрана, а ListView.GetItemAt() обрабатывает относительно собственного окна?
clickmaker (2007-10-17 11:58:00) [11]
> [8] koha (17.10.07 11:53)
а до Ф1 не дотянуться?
GetCursorPos() + ListView.GetItemAt()
koha (2007-10-17 11:53:00) [12]> [7] clickmaker © (17.10.07 11:49)
>
> > [6] koha (17.10.07 11:44)
>
> GetCursorPos, например
- а оно возвращает в какой колонке и строке курсор находится?
clickmaker (2007-10-17 11:49:00) [13]
> [6] koha (17.10.07 11:44)
GetCursorPos, например
koha (2007-10-17 11:44:00) [14]> [5] clickmaker © (17.10.07 10:34)
> OnAdvancedCustomDrawItem
- A через что тут обработать позицию курсора?
clickmaker (2007-10-17 10:34:00) [15]
> а вот изменить цвет шрифта в строке X и N-й колонке, как
> осуществить?
OnAdvancedCustomDrawItem
koha (2007-10-17 10:05:00) [16]Позицию колонки и строки найти это еще пол дела, а вот изменить цвет шрифта в строке X и N-й колонке, как осуществить?
Palladin (2007-10-16 12:01:00) [17]а... колонки отдельно нужно.... тогда да, MouseMove, найти колонку считать циферки Columns[i].Width и вычислять...
Palladin (2007-10-16 11:57:00) [18]TListView.HotTrack
koha (2007-10-16 11:55:00) [19]Просматривал предыдущие ветки нашел такой способ:
procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//...
ListView1.GetItemAt(x, y).Index;
//...
end;
- Это найти позицию строки, а как найти позицию колонки?