Главная страница
    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.086 c
15-1191917559
БарЛог
2007-10-09 12:12
2007.11.11
Direct Connect - сервер


15-1190524333
vrem
2007-09-23 09:12
2007.11.11
Подскажите программу сделать vob!


2-1192729777
periskops
2007-10-18 21:49
2007.11.11
Определение прав пользователя


2-1192460045
фыва
2007-10-15 18:54
2007.11.11
буфер обмена


2-1192895025
StanislavLZ
2007-10-20 19:43
2007.11.11
Два вопроса по TMemo





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