| imho.ws |
![]() |
|
|
|
# 1 |
|
Advanced Member
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490
![]() ![]() ![]() ![]() ![]() ![]() |
Откуда вызвано PopUpMenu было...
Есть два Edit'а. Есть одно popupmenu, которое прицеплено к ним обоим.
Допусти, там есть очистить. Как узнать какой Edit то мне чистить Sender - это сам элемент PopUpMenu, он MenuItem... Как мне узнать от какого edita он был вызван? Что-то типа такого procedure TForm1.N4Click(Sender: TObject); begin (((Sender as TMenuItem).NaMneKliknuli) as TEdit).clear; end; Ответьте, пожайлуста!!! |
|
|
|
|
# 8 |
|
Advanced Member
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490
![]() ![]() ![]() ![]() ![]() ![]() |
Попробовал, не получается. Focused тот edit, в котором стоит курсор, а я в это время могу вызвать popup на другом а дейсвтия буду происходить с тем, в котором курсор...
Народ, ну вы чего, ни разу не сталкивались? |
|
|
|
|
# 9 |
|
::VIP::
шайтан-башка Регистрация: 31.03.2003
Адрес: imho.ws
Тюменское отделение
Сообщения: 1 902
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Только что делал - всё ок!
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
PopupMenu1: TPopupMenu;
Clear1: TMenuItem;
procedure Clear1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Clear1Click(Sender: TObject);
begin
if Edit1.Focused then
ShowMessage('Edit1 ') else ShowMessage('Edit2 ');
end;
end.
Даже если правишь всё в одном Edit, а кликаешь правой в другом, то все нормально определяется! |
|
|
|
|
# 10 |
|
Advanced Member
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490
![]() ![]() ![]() ![]() ![]() ![]() |
Ну не знаю, как у тебя, я писал тоже самое, так:
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 Но это не красиво. Не может быть, чтобы так оно было криво. |
|
|
|
|
# 13 |
|
Junior Member
Регистрация: 17.12.2002
Адрес: [EST], Tallinn
Сообщения: 120
![]() |
Ну, если ты знаешь, что попапменю прицеплено к едитам, то кто тебе мешает попробовать Sender as tedit ??? потом уже и работать с его пропертями...
Хотя, я могу и ошибаться...
__________________
"я не волшебник - я только учусь..." (c) ...а зовут меня Олег... |
|
|
|
|
# 15 |
|
::VIP::
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А можно и легче:
(PopupMenu1.PopupComponent as TEdit).Clear; или на любой случай: (((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent as TEdit).Clear;
Последний раз редактировалось f00rd; 24.05.2004 в 18:13. |
|
|
|
|
# 17 |
|
Junior Member
Регистрация: 17.12.2002
Адрес: [EST], Tallinn
Сообщения: 120
![]() |
в таком случае, используй свойство PopUpComponent. Взято со страницы http://infoprogram.narod.ru/Delphi/4/23.htm
__________________
"я не волшебник - я только учусь..." (c) ...а зовут меня Олег... |
|
|
|
|
# 18 | |
|
::VIP::
шайтан-башка Регистрация: 31.03.2003
Адрес: imho.ws
Тюменское отделение
Сообщения: 1 902
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Точно!
Цитата:
|
|
|
|
|
|
# 19 |
|
Advanced Member
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490
![]() ![]() ![]() ![]() ![]() ![]() |
Спасибо, ребят. А как теперь награды ставить?
Теперь кому не влом, гляньте сюды: http://www.imho.ws/showthread.php?p=520812 |
|
|