Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

В чём ошибка???   Найти похожие ветки 

 
^Sanya ©   (2002-12-13 20:36) [0]

Цель: динамически создать Action и добавить его в ActionMeinMenuBar:
Итог: всё ок, кроме самого добавления... Новый Action отображается в Cusomize, но хотелось бы его сразу программно добавить в Меню.
Решение наверняка простое...
Вот код:


...

procedure TForm1.Button1Click(Sender: TObject);
var
a: TAction;
begin
a := TAction.Create(Self);
with a do
begin
ActionList := ActionManager1;
OnExecute := ActionExecute;
Name := "MyNewAction";
Caption := "Runtime Action";
Category := "Window";
end;
// не знаю, как работать с добавлением , следующая строка выдаёт "Access Violation":
ActionManager1.AddAction(a, ActionMainMenuBar1.ActionClient);
end;

procedure TForm1.ActionExecute(Sender: TObject);
begin
ShowMessage((Sender as TComponent).Name);
end;


Подскажите, пожалуйста.


 
^Sanya ©   (2002-12-13 21:54) [1]

пожааалуйста....
Очень прошу...
Хотя бы где копать, Help мне ответа не дал....
То ли руки кривые, отли что ещё:)


 
^Sanya ©   (2002-12-13 22:37) [2]

неужели это так сложно?


 
^Sanya ©   (2002-12-14 13:34) [3]

пожалуйста, помогите, кто может...


 
Макс Черных ©   (2002-12-14 13:37) [4]

Чтобы добавить что нибудь динамически в ActionMeinMenuBar
для начала надо чтобы там был хотя бы один элемент.
Добавление ClientItem осуществляется с помощью метода

function TCustomActionManager.AddAction(AnAction: TCustomAction;
AClient: TActionClient; After: Boolean): TActionClientItem;


Здесь AClient как раз тот элемент до или после(параметр After) которого мы вставляем свой. Для того, чтобы задать этот самый
AClient есть свои методы. Для примера, допустим у нас есть
actionFile: TAction у которого Caption = "File".
При этом этому actionFile должен быть статически назначен
ClientItem в ActionMeinMenuBar. Так же имеем динамически
созданную a: TAction. Вот имея все это, можем добавлять,
тут есть на выбор 2 варианта
1. Указание места вставки через Caption
ActionManager1.AddAction(a, ActionManager1.FindItemByCaption("File"));
2. Указание места вставки через Name у TAction(после которой вставляем)
ActionManager1.AddAction(a, ActionManager1.FindItemByAction(actionFile));


 
^Sanya ©   (2002-12-14 15:41) [5]


> Макс Черных © (14.12.02 13:37)

Огромное спасибо!



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-74740
orion_st
2002-12-10 16:30
2002.12.23
Проблемы с добавлением объекта в StringList


1-74707
UnDISCOvery
2002-12-10 20:17
2002.12.23
Drag&Dock. Перекрытие клиентов. Как бороть ?


14-74972
Дмитрий К.К.
2002-12-03 06:18
2002.12.23
Регистрация домена com


1-74728
Netcoder
2002-12-13 08:12
2002.12.23
Перевод TColor в HEX


3-74579
cutter-pro
2002-12-04 16:24
2002.12.23
Delphi и Excel в одну постель???