Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как определить контрол вызвавший popupmenu


Разведка ©   (2013-01-10 22:06:00) 

На форме несколько контролов и один TPopupActionBar
Все контролы вызывают одно меню, как определить в процедуре вызванного меню какой именно контрол его вызвал?

ShowMessage(TControl(Sender).ClassName);
Сендер определяет только класс самого меню


Игорь Шевченко   (2013-01-11 10:27:00) [1]

Ega23 ©   (11.01.13 01:01) [12]


> Ага, а OnActionUpdate - это для марсиан.


Это в Киеве дядька


Inovet   (2013-01-11 02:19:00) [2]

Я сразу и не понял, как сделано. А не лучше ли по кнопке для вызова редактора справочника возле каждого комбобокса? Даже сделать такой компонет специальный.


Германн   (2013-01-11 02:04:00) [3]


> Игорь Шевченко ©   (10.01.13 23:07) [9]
>
> Как вариант, меню должно предполагать однозначное действие,
>  а не разные, в зависимости от того, кто инициировал это
> единственное меню. Применительно к рогам с копытами я бы
> ввел два пункта - добавтить рог или добавить копыто
>

Не согласен! Зачем пользователю, который хочет и в некоторых случаях может работать только с рогами выдавать меню, где есть выбор копыт?


Ega23   (2013-01-11 01:01:00) [4]


> Action должен выполнять, а не проверять.

Ага, а OnActionUpdate - это для марсиан.


Игорь Шевченко   (2013-01-10 23:28:00) [5]

Ega23 ©   (10.01.13 23:22) [10]

Action должен выполнять, а не проверять. Впрочем, желающих странного достаточно.


Ega23   (2013-01-10 23:22:00) [6]


> Как вариант, меню должно предполагать однозначное действие,
>  а не разные, в зависимости от того, кто инициировал это
> единственное меню. Применительно к рогам с копытами я бы
> ввел два пункта - добавтить рог или добавить копыто
>


Ну тут спорный вопрос. Если на попапе - то, наверное, создать 2 экшена с Caption = "Добавить". А если не только попап, но ещё и кнопка на тулбаре, то не лишено смысла создать один Action и там в нём контрол проверять.


Игорь Шевченко   (2013-01-10 23:07:00) [7]

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


Den   (2013-01-10 23:06:00) [8]

Я может не совсем понял че автор хотел но что если определить глобальный TComponent и проверять его при вызове? Сори если не в тему даже не знаю че такое TPopupMenu это.


Разведка   (2013-01-10 22:35:00) [9]


> Игорь Шевченко ©   (10.01.13 22:34) [6]
> Бедные пользователи


Ок. А как вариант как можно по другому?


Игорь Шевченко   (2013-01-10 22:34:00) [10]

Бедные пользователи


Разведка   (2013-01-10 22:23:00) [11]


> Игорь Шевченко ©   (10.01.13 22:09) [1]
> Зачем ?


Не красиво отвечать на вопрос вопросом

Вы меня толкаете в дополнительную демагогию

Например у меня БД где учитываются РОГА и КОПЫТА и на форме добабавления в таблицу новых  рогов и копыт 2 комбобокса из которых нужно выбрать в 1-м рога (прямые, косые, спиленные) во 2-м копыта (подкованные, стертые... т.д.), но вот возникает ситуация, когда желаемых свойств нет, но есть попуп меню в котором есть пункт "добавить в справочник" оно вызывает справочник для добавления, но в зависимости каким контролом было вызвано меню, например РОГА, то в процедуре должен вызван и соответствующий справочник "Добавление РОГОВ" ..
На форме много на самом деле много контролов с единственным меню...


Ega23   (2013-01-10 22:16:00) [12]


unit Unit21;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Menus, ComCtrls;

type
 TForm21 = class(TForm)
   TreeView1: TTreeView;
   ListView1: TListView;
   ListView2: TListView;
   PopupMenu1: TPopupMenu;
   qwewqe1: TMenuItem;
   procedure qwewqe1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form21: TForm21;

implementation

{$R *.dfm}

procedure TForm21.qwewqe1Click(Sender: TObject);
begin
 ShowMessage(PopupMenu1.PopupComponent.Name);
end;


Sha   (2013-01-10 22:16:00) [13]

PopupComponent


Smile   (2013-01-10 22:13:00) [14]

> Игорь Шевченко ©   (10.01.13 22:09) [1]

Мне тоже интересно, зачем?
:)


Игорь Шевченко   (2013-01-10 22:09:00) [15]

Зачем ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо