| 
| 
 | Вопрос # 4 740/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!У меня есть связка TActionMainMenuBar с TActionManager. Программно создаются TAction и TActionClientItem. Для этого сделан простенький класс. Подскажите как правильно удалить элемент из меню.
 
 Сейчас получается так, что я при открытии файла с помощью класса добавляю элементы в меню с действиями в зависимости от содержания файла. При открытии другого файла старые элементы меню должны удалиться и добавиться новые. Но у меня отображаются новые элементы неактивными.
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: Roman Novikov (статус: Посетитель)Вопрос отправлен: 17 ноября 2010, 11:05
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 18 ноября 2010, 17:35; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 17 ноября 2010, 11:17 [#1]: Цитата (Roman Novikov): Программно создаются TAction и TActionClientItem. Для этого сделан простенький класс. Подскажите как правильно удалить элемент из меню. Предполагаю, что надо удалять не только созданный TAction, но и TActionClientItem, связанный с ним.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Roman Novikov (статус: Посетитель), 17 ноября 2010, 17:24 [#2]:А еще в созданных таким образом Actions иконки съезжают вниз. |  
|   | Roman Novikov (статус: Посетитель), 18 ноября 2010, 15:22 [#3]:min@y™, я в цикле получаю все подэлементы типа TActionClientItem's, у его Action'а вызываю деструктор, а потом и деструктор самого элемента. Все равно не получилось. |  
|   | min@y™ (статус: Доктор наук), 18 ноября 2010, 15:30 [#4]:TActionClientItem - это что, пункт меню? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Roman Novikov (статус: Посетитель), 18 ноября 2010, 17:33 [#5]: var
AClient: TActionClientItem;
ActionManager1: TActionManager;
...
AClient := ActionManager1.FindItemByCaption('Объекты');
...
end;В общем у меня свой косяк из-за повторяющихся элементов был, удалять можно так:
 
 AClient := ActionManager1.FindItemByCaption('Объекты');
for i :=  AClient.Items.Count - 1 downto 0 do
    AClient.Items[i].Action.Destroy; |  
|   | Roman Novikov (статус: Посетитель), 18 ноября 2010, 17:35 [#6]:Но почему иконки у динамически создаваемых элементов съехавшие вниз не понял. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |