Перейти к содержанию
  • 0
Alisson R Oliveira

Расположение нажатого элемента управления по отношению к экрану

Вопросы


Добрый день,
Ребята, я пробовал использовать компонент TPopup с TEdit, но он не получает ввод данных.
Мне нужно будет создать форму для имитации tpopup. Однако я не знаю, как получить аккорд расположения компонента относительно его расположения на холсте (где он был нарисован на шине устройства).
Может ли кто-нибудь помочь мне, как я могу это сделать?

Весьма признателен

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

  • 0

ClientToScreen(Edit1.LocalToAbsolute(Edit1.BoundsRect)) - может быть так?

Отредактировал dnekrasov

Поделиться сообщением


Ссылка на сообщение
  • 0

 

21 минут назад, Alisson R Oliveira сказал:

функция ClientToScreen не компилируется в TFrame

Да, она только у TCommonCustomForm. До неё можно добраться так:

function GetOwnerForm: TCommonCustomForm;
var
  ctrl: TComponent;
begin
  Result := nil;
  ctrl := Self.Owner;
  while Assigned(ctrl) and not (ctrl is TCommonCustomForm) do
    ctrl := ctrl.Owner;

  if Assigned(ctrl) and (ctrl is TCommonCustomForm) then
    Result := ctrl as TCommonCustomForm;
end;

 

Отредактировал dnekrasov

Поделиться сообщением


Ссылка на сообщение
  • 0

Доступ ко многим protected методам можно получить через интерфейсы:
ClientToScreen доступен через IControl, т.е. любой контрол (Ctrl as IControl).ClientToScreen
 

про поиск TCommonCustomForm - у всех контролов есть Root - TCommonCustomForm(Ctrl.Root.GetObject) (незабываем проверять nil :) )
еще есть Scene...

 

Поделиться сообщением


Ссылка на сообщение
  • 0

не ClientToScreen а LocalToScreen... оно есть у фрейма...

Пример:

LocalToScreen(TPointF.Zero) - левый верхний угол фрейма в координатах экрана,

LocalToAbsolute(TPointF.Zero) - левый верхний угол фрейма в координатах формы.

 

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...