powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как узнать на каком контроле кликнут элемент попапменю?
21 сообщений из 46, страница 2 из 2
Как узнать на каком контроле кликнут элемент попапменю?
    #39852717
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var PopupEdit: TObject;

procedure TMainForm.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  PopupEdit := Sender;
end;
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852718
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorу компонентов есть их координаты на известна точка клика.

И вот тут мы начинаем второй раунд с того, что точка клика неизвестна. Ибо VCL вследствие
криворукости своих разработчиков плюёт на координаты, приходящие с сообщением о клике.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852745
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно выяснить Screen.ActiveControl;
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852748
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,ну и не надо к ним привязываться, а придумать сто-нибудь своё.
На примере ТриВью, например, видно, что выделенных веток может быть много, с галками и без, может не быть совсем, но это не повод отказываться от попапа. (причем не только меню, но и текста, картинки, ещё чего-то)

Не координатами механизм жив однако и не контролами едиными.

Вот например, в DataSource жмакнуть невозможно, потому что он невизуальный.
Но работать и попапить можно его свойства и другую трехмудию.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852752
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
22.08.2019 14:30, rgreat пишет:
> Еще можно выяснить Screen.ActiveControl;

нет
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852753
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatможно выяснить Screen.ActiveControl;

"О, сколько нам открытий чудных..."
При правом клике контрол не получает фокус.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852761
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПри правом клике контрол не получает фокус.
Это смотря какой контрол.

Тут все решения не дают 100% результата. Да и не могу дать.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852764
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем топикстартеру ответ "это так не работает".

Надо вручную вызывающий контрол запоминать.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852775
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatТут все решения не дают 100% результата.

Есть решение, дающее 100% результат: пофиксить бага в VCL. Но оно недоступно для аффтара.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852915
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatoralekcvp> ... без нажатия кнопок мыши - например пробел ...
А какая разница?
....
Жмакай хоть пробел, хоть [Alt]+?
Так что точка показа попапменю всегда под контролем.
Такая, что код выше анализирует положение указателя мыши чтобы определить кем было открыто меню.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852919
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpТакая, что код выше анализирует положение указателя мыши чтобы определить кем было открыто меню.
А, не, пиз туплю, точку всплытия...
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852929
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpalekcvpТакая, что код выше анализирует положение указателя мыши чтобы определить кем было открыто меню.
А, не, пиз туплю, точку всплытия...Да. А координаты можно всегда указать в терминах экрана.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39852939
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсть решение, дающее 100% результат: пофиксить бага в VCL. Но оно недоступно для аффтара.
Для сторонних компонентов это не гарантирует результат.

Да и при вызове PopupMenu1.Popup(100,100); ручками - тоже никак не спасет.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853012
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatДа и при вызове PopupMenu1.Popup(100,100); ручками - тоже никак не спасет.Это смотря как (100,100) считать, в каких единицах и т.п.
Я предлагал "от печки" (0, 0) видимой области.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853013
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorЭто смотря как (100,100) считать, в каких единицах и т.п.
Я предлагал "от печки" (0, 0) видимой области.Какая разница как считать если в данном случае вообще нет связи ни с какими визуальными компонентами.

Попап просто вызывается сам по себе. В центре экрана по таймеру, например.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853016
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatПопап просто вызывается сам по себе.

А теперь перечитываем вышеотквоченную справку: "тот, кто вызовет попап ручками, несёт
полную ответственность за установку или неустановку свойства PopupComponent".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853018
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat, я и говорю. Вопрос из пальца высосан.
Афтрар ведь на экран смотрит, там и щёлкает мышой или кнопки жмакает. А куда он попапку высветит - его видение. И причём тут контролы и компоненты?. Достаточно мессаг и координат на форме.
А если формы нет, попапка повиснет в воздухе. ОС ещё никому отменить не удалось. Разве что программы-мониторы. Но там ни экранов не было, ни ОС.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853066
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Другими словами в общем случае задача не решаема.
А частные случаи решений тут все уже небось поперечисляли.
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853736
Фотография sasha27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingНа форме несколько ButtonedEdit, RightButton.DropDownMenu каждого эдита связан с одним и тем же PopupMenu с несколькими MenuItem.
Как узнать на кнопке какого эдита был кликнут пункт меню?
Пробовал так: ...



День добрый.
Если все компоненты однотипные ("несколько ButtonedEdit"), то решается след. образом.
Заводится глобальная переменная, например:
Код: pascal
1.
var ActButton : TButtonedEdit;


Делаем процедуру (имя придумаешь сам...):
Код: pascal
1.
2.
3.
4.
procedure ButtonedEnter(Sender: TObject);
begin
  ActButton := (Sender as TButtonedEdit); 
end;


При создании формы (или при показе) - к каждому компоненту на событие onEnter цепляем эту процедуру:

Код: pascal
1.
2.
3.
4.
5.
...
ButtonedEdit1.OnEnter := ButtonedEnter; 
ButtonedEdit2.OnEnter := ButtonedEnter; 
ButtonedEdit3.OnEnter := ButtonedEnter; 
...



Как работает: При клацанье мышью, у компонента происходит событие onEnter, в нем в переменную заносится тот объект, на котором сработало это событие.
Т.е. после вызова твоего по-папа, можно узнать из переменной на чем оно сработало.
Вот и все...
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39853739
Фотография sasha27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYing
проект
...
Рейтинг: 0 / 0
Как узнать на каком контроле кликнут элемент попапменю?
    #39854948
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sasha27,

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


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