Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / узнать имя контрола который расположен по заданным координатам / 5 сообщений из 5, страница 1 из 1
26.10.2018, 16:43
    #39723659
garun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать имя контрола который расположен по заданным координатам
на форме расположена панель (pnlContainer), внутри этой панели еще несколько динамически созданных панелей одинаковой высоты и ширины расположенные одна над другой со свойством Align = alTop.
нужно при наведении мыши на одну из панелей узнать имя панели расположенной над ней. для этого решил действовать так:
1) узнать координаты панели над которой находится курсор
2) сместить координаты на несколько пикселей вверх и получить имя панели в этих координатах

на событие OnMouserEnter каждой панели вешаю это:
Код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var
 P1: TPoint;
begin
  P1 := (Sender as TPanel).ClientToParent(Point(0, 0)); //получаем координаты панели над которой курсор
  if pnlContainer.ControlAtPos(Point(P1.X, P1.Y-5), False) = nil //получаем панель находящуюся на 5 пикселей выше
  then lbl1.Caption:= 'nil'
  else lbl1.Caption:= pnlContainer.ControlAtPos(Point(P1.X, P1.Y-5), False).Name; //выводим имя панели


но всегда почему-то возвращается nil . не могу понять в чем дело, подскажите что не так?
...
Рейтинг: 0 / 0
26.10.2018, 16:49
    #39723668
garun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать имя контрола который расположен по заданным координатам
для наглядности задачи)

...
Рейтинг: 0 / 0
26.10.2018, 16:54
    #39723674
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать имя контрола который расположен по заданным координатам
garunдля этого решил действовать так

Это не совсем правильный подход. Гораздо надёжнее пройти по списку Controls pnlContainer-а
и найти тот, у которого Top меньше, чем у данной панели, но максимален.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.10.2018, 17:16
    #39723696
garun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать имя контрола который расположен по заданным координатам
Dimitry Sibiryakovgarunдля этого решил действовать так

Это не совсем правильный подход. Гораздо надёжнее пройти по списку Controls pnlContainer-а
и найти тот, у которого Top меньше, чем у данной панели, но максимален.


пожалуй, вы правы. так и сделал.
но теперь хотя бы ради интереса хотелось бы узнать почему приведенный код не работает
...
Рейтинг: 0 / 0
27.10.2018, 00:28
    #39723823
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать имя контрола который расположен по заданным координатам
garun,

Отладка тебе поможет раскрыть этот секрет!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / узнать имя контрола который расположен по заданным координатам / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]