![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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;Последний раз редактировалось Yurk@, 20.04.2012 в 20:52. |
| Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
Старый (20.04.2012)
| ||
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
||||
|
||||
|
не, прийдется перебирать всё
Последний раз редактировалось 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; |