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