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

Вниз

ItemAtPos   Найти похожие ветки 

 
Flea   (2006-06-28 23:58) [0]

товарищи! а почему у коловского listbox нет свойства itematpos? или я его не вижу просто? а может быть есть другой способ узнать номер итема под курсором мыши?


 
ECM ©   (2006-06-29 11:30) [1]

Действительно нет ... :(
Но доделать это несложно... А пока воспользуйтесь сл. функцией:
 function LBItemAtPos(LBCtrl: PControl; X,Y: Integer): Integer;
 var
   R: TRect;
   P: TPoint;
   i: Integer;
 begin
   P := MakePoint(X,Y);
   for i := LBCtrl.Perform(LB_GETTOPINDEX,0,0) to LBCtrl.Count -1 do begin
     LBCtrl.Perform(LB_GETITEMRECT, i , Integer(@R));
     if PointInRect(P,R) then begin
       Result := i;
       Exit;
     end;
   end;
   Result := -1;
 end;

Тут есть одна особенность - item-ы просматриваются начиная с первого видимого. И если их будет "огромное количество" - цикл может затянуться.
Впрочем VCL делает точно так же.


 
Flea   (2006-06-29 14:45) [2]

благодарю за помощь



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
15-1171568690
Johnmen
2007-02-15 22:44
2007.03.25
Что Вам мешает купить Windows?


15-1172581034
Rare
2007-02-27 15:57
2007.03.25
Что такое поиск в ширину в фазовом пространстве?


15-1172409457
Par
2007-02-25 16:17
2007.03.25
как скачивать фильмы чтобы провайдер не понял что это фильмы


11-1151155887
AlexanderMS
2006-06-24 17:31
2007.03.25
Ошибка: unit "xxx" was compiled with different version of "yyy".


15-1172649269
Petrovsky
2007-02-28 10:54
2007.03.25
Debuger окончательно заколебал