Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar? / 5 сообщений из 5, страница 1 из 1
01.05.2019, 14:51
    #39808840
kuzduk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar?
всем привет. стала задача такая: итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar

всё сделал вот только не могу получить TAction от итема из PopupMenu, чтоб присвоить этот Action для TActionClientItem.

PopupMenu.Items[i] возвращает TContainedAction а надо бы TAction... помогитя!)


мой код:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
//------------------------------------------------------------------------------ pm_to_mm
procedure pm_to_mm(pm: TPopupMenu; mm: TActionMainMenuBar; mmIndex: integer);
{
pm - PopupMenu итемы из которого подгружаем в менюху ActionMainMenuBar
mm - главное меню ActionMainMenuBar, в менюху которого подгружаем содержимое pm
mmIndex - индекс менюхи в которую будем подгружать итемы
}
begin

mi_to_aci(pm.Items, MM.ActionControls[mmIndex].ActionClient);

end;



//------------------------------------------------------------------------------ mi_to_aci
procedure mi_to_aci(mi: TMenuItem; aci: TActionClientItem);
var
  i: Integer;
  iaci: TActionClientItem;
  MyAction: TAction;

begin


aci.Items.Clear;


for i := 0 to mi.Count - 1
do
begin

  iaci := aci.Items.Add;


//  iaci.Action := mi.Action; //Не присваивается Action!!! Action присвоенный к итему в PopupMenu как его присвоить к TActionClientItem??? Как получить Taction от TBasicAction???
//Прописываем все свойсва не через Action а вручную:
  iaci.Caption := mi.Items[i].Caption;
  iaci.ImageIndex := mi.Items[i].ImageIndex;
  iaci.ShortCut := mi.Items[i].ShortCut;
  iaci.Visible := mi.Visible;
//  iaci.Enabled := mi.Enabled; //aci не имеет свойства Enabled - полюбому придётся присваивать Action
//  iaci.OnClick:= mi.OnClick; //aci не имеет события OnClick - полюбому придётся присваивать Action

//  ShowMessage(mi.Action.Name); //Не возвращает имя акшона



  if mi.Items[i].Count <> 0 //has SUB-items
  then mi_to_aci(mi.Items[i], iaci)

end;


end;
...
Рейтинг: 0 / 0
02.05.2019, 13:29
    #39809238
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar?
kuzduk,

Просто action присвоить недостаточно? Вместо всей этой бороды.
...
Рейтинг: 0 / 0
02.05.2019, 17:40
    #39809309
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar?
kuzduk,

авторКак получить Taction от TBasicAction?

Taction(Action)?
...
Рейтинг: 0 / 0
03.05.2019, 10:36
    #39809419
kuzduk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar?
вот эта строчка не работает:
iaci.Action := mi.Action;

iaci.Action := TAction; - должно быть указание на TAction


iaci.Action := TAction(mi.Action); - так ошибка лезет.
...
Рейтинг: 0 / 0
03.05.2019, 14:56
    #39809500
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar?
kuzduk,

автортак ошибка лезет.

секретная? информации пиши больше. не все все компоненты видели :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как итемы с акшенами из PopupMenu загрузить в TActionMainMenuBar? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]