Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Над каким элементом в списке курсор.   Найти похожие ветки 

 
Nikfel ©   (2007-10-06 20:47) [0]

Подскажите пожалуйста. Как определить над каким элементом в списке(TList) находится курсор мыши. Заранее спасибо.


 
Desdechado ©   (2007-10-06 21:00) [1]

TList - невизуальный класс, поэтому курсор над ним быть не может.


 
Nikfel ©   (2007-10-06 21:10) [2]

А над каким может?


 
DVM ©   (2007-10-06 21:10) [3]


> А над каким может?

TListBox, TListView


 
Nikfel ©   (2007-10-06 21:22) [4]

Можно ли небольшой пример. Как это сделать. Или укажите где можно почитать по этой теме информацию понятную для восприятия.


 
DVM ©   (2007-10-06 21:46) [5]


> Или укажите где можно почитать по этой теме информацию

В справке и MSDN. Я думаю, обработка сообщений WM_NCHITTEST приходящих листбоксу или листвью тебе поможет.


 
palva ©   (2007-10-06 22:42) [6]

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
Label1.Caption := IntToStr((Y) div 13);
end;
Константу 13, наверно можно как-нибудь извлечь через функцию API
GetSystemMetrix Cм. MSDN


 
DVM ©   (2007-10-06 22:50) [7]


> palva ©   (06.10.07 22:42) [6]


> Константу 13, наверно можно как-нибудь извлечь через функцию
> API

сообщение LB_GETITEMHEIGHT


 
DVM ©   (2007-10-06 22:51) [8]

или listbox1.ItemHeight :)


 
palva ©   (2007-10-06 22:52) [9]

> сообщение LB_GETITEMHEIGHT
Ну то есть SendMessage надо использовать?


 
DVM ©   (2007-10-06 22:53) [10]

или LB_ITEMFROMPOINT или listbox1.ItemAtPos()


 
palva ©   (2007-10-06 22:55) [11]

> или listbox1.ItemHeight :)
Тогда вообще просто.
Вот смотрите, Nikfel ленится посмотреть справку, а мы за его счет приобрели бесценный опыт. Что бы мы без него делали.


 
DVM ©   (2007-10-06 22:58) [12]


> Тогда вообще просто.

[10] еще проще. :)


 
Nikfel ©   (2007-10-07 08:33) [13]

Большое спасибо. Такой код намного лудше, чем обработка WM_NCHITTEST, но наверно в компоненте TListView он не пройдет из-за полосы прокрутки(горизонтальной).


 
Virgo_Style ©   (2007-10-07 10:49) [14]

ListView1.GetItemAt()
ListBox1.ItemAtPos()

?


 
DVM ©   (2007-10-07 11:32) [15]


> Такой код намного лудше, чем обработка WM_NCHITTEST

Само по себе WM_NCHITTEST совсем с сабжем не связано, но это сообщение приходит чаще, чем WM_MOUSEMOVE при движении мыши над контролом. Внутри его обработчика и надо выяснять, что за итем под указателем мыши.


> но наверно в компоненте TListView он не пройдет из-за полосы
> прокрутки

Пойдет. Только названия свойств и методов, а также сообщений другие. См, например [14]


> Nikfel ©  

А ты вообще, что пытаешься сделать то? Скажи, может есть и другие решения.


 
Nikfel ©   (2007-10-07 20:15) [16]

При горизонтальной полосе прокрутки в TListView:
procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var i:integer;
begin
i:=ListView1.TopItem.Index;
if i>0 then i:=i+1;
caption:=IntToStr(((Y) div 13)+i);
end;
Скорей всего высоту надо использовать не 13. Код возможно нуждается в доработке.


 
DVM ©   (2007-10-07 20:28) [17]


> Скорей всего высоту надо использовать не 13.

Зачем тебе это 13 вообще сдалось? Есть как минимум 2 способа выяснить над каким элементом ListView находится указатель мыши и о обоих тебе уже написали. Но чукча видимо не читатель.


 
DVM ©   (2007-10-07 20:32) [18]


procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 LI: TListItem;
begin
 LI := ListView1.GetItemAt(x, y);
 if LI <> nil then
   caption := inttostr(ListView1.GetItemAt(x, y).Index)
 else
   Caption := "";
end;


 
Nikfel ©   (2007-10-07 20:39) [19]

Спасибо. Теперь все понятно.



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
15-1190896489
X9
2007-09-27 16:34
2007.10.28
Подскажите учебник по FireBird


15-1190126099
alex_ant
2007-09-18 18:34
2007.10.28
Поможет ли тут система сопровождения версий?


11-1174499479
ElectriC
2007-03-21 20:51
2007.10.28
KOL ft BDS 2005


9-1162110637
Zlodey
2006-10-29 11:30
2007.10.28
DelphiX


2-1191921383
BOBik
2007-10-09 13:16
2007.10.28
Visible