Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.048 c
15-1191966748
Petr V. Abramov
2007-10-10 01:52
2007.11.11
действительно сломалось все


15-1191414639
Elen
2007-10-03 16:30
2007.11.11
Несовместимость нового железа и старого софта.


6-1173167422
dron9205
2007-03-06 10:50
2007.11.11
Передача информации через com-порт


2-1192160826
Mariya
2007-10-12 07:47
2007.11.11
"Антоним" процедуры на событи Create


11-1176036483
Bmouradov
2007-04-08 16:48
2007.11.11
FontOrientation или текст под углом





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