Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.04.2012, 20:41
Старый Старый вне форума
Прохожий
 
Регистрация: 09.10.2009
Сообщения: 3
Репутация: 10
По умолчанию список объектов под курсором

Всем привет. Имеется несколько объектов (TpaintBox) на форме - один над другим. Необходимо по щелчку мыши узнать сколько объектов под мышкой и список имен этих объектов. Как сделать? подскажите.
Ответить с цитированием
  #2  
Старый 20.04.2012, 20:46
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

предположу: можно перебрать все объекты на форме в цыкле и при нахождении 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  
Старый 20.04.2012, 21:21
Старый Старый вне форума
Прохожий
 
Регистрация: 09.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
предположу: можно перебрать все объекты на форме
Как вариант в принципе можно, к сожалению сейчас делфи под рукой нет, не могу попробовать. Немного введу поправку, - объекты TpaintBox находятся не на самой форме, а на панели - можно перебрать компоненты только на панели?, или придется проверять все объекты на форме? Хотя в принципе лишних объектов в приложении не так уж и много, и на скорости работы не должно повлиять, но всетаки...
Ответить с цитированием
  #4  
Старый 20.04.2012, 23:38
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

не, прийдется перебирать всё
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 20.04.2012 в 23:40.
Ответить с цитированием
  #5  
Старый 21.04.2012, 20:41
Старый Старый вне форума
Прохожий
 
Регистрация: 09.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
не, прийдется перебирать всё

Спасибо за помощь, вот что получилось.
Код:
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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter