powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить контрол источник для попапменю без вызова попамменю?
25 сообщений из 30, страница 1 из 2
Как получить контрол источник для попапменю без вызова попамменю?
    #39742316
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется динамически создаваемый грид для которого имеется попапменю. И если хотя-бы один раз вызвать это попамменю, то все хорошо, свойство PopupControl получает ссылку на владельца, но вот если обратится по горячей клавише к элементу меню, без предварительного его вызова, то PopupControl имеет уже значение nil, что в общем-то логично ведь меню то не вызывалось, но как же мне в таком случае добраться до контрола-владельца без вызова попапменю?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742357
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привязать меню к гриду, например через Tag
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742369
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через Form.ActiveControl? Или пункт меню может быть вызван даже не для активного грида?..
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742373
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ,

присвоить значение PopupComponent пробовал?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742525
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъсвойство PopupControl получает ссылку на владельца

почему при создании сетки сразу нельзя указать нужное меню, которое будет привязано к сетке?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742616
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за участие в мозговом штурме.
авторприсвоить значение PopupComponent пробовал? нет не пробовал, а идея здравая, жаль только не сработала. Все равно имеем PopupComponent=nil в обработчике, при активации горячей клавишей.

Form.ActiveControl я бы рад использовать, но я то как раз и пытаюсь через обработчик попапменю добраться хоть до чего-то кроме самого попапменю, а сие возможно только через PopupComponent который зараза пустой.

авторпочему при создании сетки сразу нельзя указать нужное меню, которое будет привязано к сетке как-то мне категорически не нравится идея создать десяток попамменю делающих одно и то-же и прицепить каждое к своему гриду. У меня одно попапменю которое привязано к десятку разных гридов.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742619
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПривязать меню к гриду, например через Tag не сработает, т.к. этот таг просто неоткуда взять в обработчике, контекста формы то и нет в нем.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742625
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъУ меня одно попапменю которое привязано к десятку разных гридов.
И какое срабатывает по горячей клавише ?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742681
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъСпасибо за участие в мозговом штурме.
авторприсвоить значение PopupComponent пробовал? нет не пробовал, а идея здравая, жаль только не сработала. Все равно имеем PopupComponent=nil в обработчике, при активации горячей клавишей.

Form.ActiveControl я бы рад использовать, но я то как раз и пытаюсь через обработчик попапменю добраться хоть до чего-то кроме самого попапменю, а сие возможно только через PopupComponent который зараза пустой.

авторпочему при создании сетки сразу нельзя указать нужное меню, которое будет привязано к сетке как-то мне категорически не нравится идея создать десяток попамменю делающих одно и то-же и прицепить каждое к своему гриду. У меня одно попапменю которое привязано к десятку разных гридов.

а проверить присвоенное значение PopupComponent пробовал?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742686
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а написать обработчик OnPopup пробовал?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742701
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя одно меню м.б. привязано к нескольким гридам, то как ты хочешь определить конкретный грид?
Если привязка 1:1, то можно просто перебором Components искать, у кого PopupMenu совпадает с владельцем пункта-Sender-а
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742703
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъForm.ActiveControl я бы рад использовать, но я то как раз и пытаюсь через обработчик попапменю добраться хоть до чего-то кроме самого попапменю, а сие возможно только через PopupComponent который зараза пустой.
Есть же Owner
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39742911
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ,

на всякий случай, "попапменю" - всплывающее меню, контекстное меню.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743211
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора написать обработчик OnPopup пробовал?
Да я много чего уже перепробовал, все и не перечислишь, но пока решения найти не получается.
1. Использовать OnPopup не поможет т.к. никакого события OnPopup не наступает при использовании горячих клавиш.
2. Owner использовать не получается т.к. свойство это ридонли, а само меню создано статически в датамодуле и владельцем соответственно является датамодуль, а не грид.
3. Sender в обработчике события это элемент меню и это нас выводит к меню владельцем которого является датамодуль.

Вот такая сказка про белого бычка.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743286
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ2. Owner использовать не получается т.к. свойство это ридонли, а само меню создано статически в датамодуле и владельцем соответственно является датамодуль, а не грид.
ССЗБ так делать.
Как вариант - при активации (фокусе) формы с гридом делай PopupMenu.Tag := NativeInt(Self); тогда в обработчике меню можно будет сделать TForm(((Sender as TMenuItem).Owner as TPopupMenu)).Tag) ...
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743295
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ,

По идее - остается только угадывать.
Берешь активную форму, ищещь на ней грид, который имеет фокус - к нему применяешь команду, которая прилетела. Если не нашел грид - ну, значит "не шмогла...".
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743316
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда ActiveForm, да. А еще поучиться выдавать всю информацию, чтобы не пришлось вытаскивать клещами по кусочкам
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743329
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ,
автор а само меню создано статически в датамодуле и владельцем соответственно является датамодуль, а не грид

Вначале трудности себе создаём, а потом героически их решаем.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743337
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъавтора написать обработчик OnPopup пробовал?
Да я много чего уже перепробовал, все и не перечислишь, но пока решения найти не получается.
1. Использовать OnPopup не поможет т.к. никакого события OnPopup не наступает при использовании горячих клавиш.
2. Owner использовать не получается т.к. свойство это ридонли, а само меню создано статически в датамодуле и владельцем соответственно является датамодуль, а не грид.
3. Sender в обработчике события это элемент меню и это нас выводит к меню владельцем которого является датамодуль.

Вот такая сказка про белого бычка.

KeyPreview пробовал?
AppMessage пробовал?
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743518
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon в чем вы видите трудности мною созданные? Абсолютно без разницы, где я popupmenu изначально размещу, но все общие элементы удобнее хранить в отдельном контейнере, что я и делаю.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743541
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот предложение alekcvp, с небольшими доработками, вполне похоже жизнеспособно. Ранее было предложение использовать Tag, но несколько иначе и я его сразу отбросил, а зря - был неправ. Тестирую, пока косяков не замечаю, работает как надо. Всем спасибо за потраченное время.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743573
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ,

с самого начала задача не была сформулирована (предполагаю, может быть и не осознана) четко. Если одно меню на несколько форм/таблиц(гридов), то чтобы меню адекватно работало, нужно, чтобы к моменту его вызова была указана информация, к какому элементу управления меню вызывается. Раз эти данные уже должны быть, то значит их нужно указать 1) в какой-то момент раньше. И каким-то образом передать их в меню и 2) сохранить там. Чтобы при вызове эти данные использовать.
И вот решение этой задачи, как предложил alekcvp: момент передачи - активация формы, а сохранять данные - в Tag.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39743579
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62,
*к моменту его вызова - к моменту его вызова с помощью горячих клавиш (если меню вызывается по клику на элементе управления, то информацию можно передать в этот момент)
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39744618
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как оказалось, не все так хорошо и с тагом. А вот простое решение использовать Screen.ActiveControl, оказалось рабочим. alekcvp почти попал в точку предложив еще в самом начале Form.ActiveControl.
...
Рейтинг: 0 / 0
Как получить контрол источник для попапменю без вызова попамменю?
    #39744619
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтрадалецъКак оказалось, не все так хорошо и с тагом. А вот простое решение использовать Screen.ActiveControl, оказалось рабочим. alekcvp почти попал в точку предложив еще в самом начале Form.ActiveControl.

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


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