|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
список объектов под курсором
Всем привет. Имеется несколько объектов (TpaintBox) на форме - один над другим. Необходимо по щелчку мыши узнать сколько объектов под мышкой и список имен этих объектов. Как сделать? подскажите.
|
#2
|
||||
|
||||
предположу: можно перебрать все объекты на форме в цыкле и при нахождении TpaintBox проверять "входят ли координаты мышки в плоскость найденого TpaintBox" ... если да - получаем из найденого компонента все данные и засчитываем его)
Код:
var pb : TpaintBox; i:integer; begin for i:=0 to Form1.ComponentCount-1 do if (Form1.Components[i] is TpaintBox) and (<проверка на позицию мыши>) then showmessage(Form1.Components[i].Name); end; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 20.04.2012 в 20:52. |
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
Старый (20.04.2012)
|
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
не, прийдется перебирать всё
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 20.04.2012 в 23:40. |
#5
|
|||
|
|||
Цитата:
Спасибо за помощь, вот что получилось. Код:
var i:integer; p:TPoint; myCursorPos: TPoint; begin myCursorPos:= Mouse.CursorPos; for i:=0 to ComponentCount-1 do begin if not (Components[i] is TWinControl) then Continue; with TWinControl(Components[i]) do begin p:=ClientToScreen(Point(0,0)); if (myCursorPos.X>=p.X)and(myCursorPos.Y>=p.Y) and (myCursorPos.X<=(p.X+Width))and(myCursorPos.Y<=(p.Y+Height)) then begin компонент с именем Name под мышкой end end; end; end; |