![]() |
Откуда вызвано PopUpMenu было...
Есть два Edit'а. Есть одно popupmenu, которое прицеплено к ним обоим.
Допусти, там есть очистить. Как узнать какой Edit то мне чистить Sender - это сам элемент PopUpMenu, он MenuItem... Как мне узнать от какого edita он был вызван? Что-то типа такого procedure TForm1.N4Click(Sender: TObject); begin (((Sender as TMenuItem).NaMneKliknuli) as TEdit).clear; end; Ответьте, пожайлуста!!! |
А разве Sender - это не то, что тебе нужно? По нему никак не определить?
|
Sender - TItemMenu. Так как на нем я кликаю... Я кликаю на элементе меню.
|
________________
|_TEdit__________|__ |Очистить <-Элемент меню (MenuItem) По нему кликаю. | | <-PopUpMenu |____________| Как мне определить, от какого TEdit "выпала" менюшка? |
Млин, о пробелы чистит!!!!!!!!!!!
|
Я думаю, что тогда следует смотреть по фокусу. Т.е. если ты кликаешь на Edit, то в нем сейчас фокус находится.
PS. Зря ты так - три сообщения для одной мысли вставил! :headshot: |
Ya dumal, chto kak ran'sh bylo pripishet (dobavleno cherz n minut).
|
Попробовал, не получается. Focused тот edit, в котором стоит курсор, а я в это время могу вызвать popup на другом а дейсвтия буду происходить с тем, в котором курсор...
Народ, ну вы чего, ни разу не сталкивались? |
Только что делал - всё ок!
Код:
unit Unit1;Даже если правишь всё в одном Edit, а кликаешь правой в другом, то все нормально определяется! |
Ну не знаю, как у тебя, я писал тоже самое, так:
if Edit1.Focused then Edit1.Clear else Edit2.Clear Потом пишу текст в обоих. Оставляю курсор в первом, менюшку правым кликом на лругом, выбираю очистить и чистится первый, а не второй. Пока вышел так: На них обоих сделал один обработчки попапа procedure TForm1.EditContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); begin PopUper:=(Sender as TEdit) //Запоминаем, у кого выпало меню end; а потом в функции PopUper.Clear Но это не красиво. Не может быть, чтобы так оно было криво. |
Хм... только что тоже проверил - всё Ок!
А ты на чем пишешь? Какой дельфи? Какая виндовс? |
Delphi 5.0 (build 5.2)
Win XP Pro SP1 Corp. Edition + MUI. моя бы воля, я бы в C builder'е писал, но такое задание... |
Ну, если ты знаешь, что попапменю прицеплено к едитам, то кто тебе мешает попробовать Sender as tedit ??? потом уже и работать с его пропертями...
Хотя, я могу и ошибаться... |
Я это в седьмой дельфе делал. к пятой, к сожалению, доступа не имею.
Поробуй в семерке... |
А можно и легче:
(PopupMenu1.PopupComponent as TEdit).Clear; или на любой случай: (((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent as TEdit).Clear; :) |
to someone312002
Sender тут TMenuItem, он никак к TEdit не приведется, выскочит ошибка приведения типов. to f00rd Сейчас попробую, хотя подобные конструкции уже рождались, но так же быстро и умирали.... |
в таком случае, используй свойство PopUpComponent. Взято со страницы http://infoprogram.narod.ru/Delphi/4/23.htm
|
Точно!
Цитата:
|
Спасибо, ребят. А как теперь награды ставить?
Теперь кому не влом, гляньте сюды: http://www.imho.ws/showthread.php?p=520812 |
Рады помочь (хотя бы постараться). А по второму вопросу ничего не могу сказать - с картинками мало работал...
|
Ответил тебе в тему по имиджу...
Заходи ещё, чем сможем - тем поможем :о) |
| Часовой пояс GMT +4, время: 07:51. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.