![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как определить контрол вызвавший 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]Зачем ?