Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Вниз

Креатим в рантайме, как избавится от ошибки?   Найти похожие ветки 

 
TPopupActionBarEx   (2008-04-17 08:33) [0]

procedure AMyExecute(Sender: TObject);
procedure AddMenuItem(Menu: TPopupActionBarEx; Action: tAction);
...
procedure AddMenuItem(Menu: TPopupActionBarEx; Action: tAction);
 var MenuItem: tMenuItem;
begin
 MenuItem:= tMenuItem.Create(Menu);
 if (Action = nil)
   then begin
     MenuItem.Action:= nil;
     MenuItem.Caption:= "-";
   end else begin MenuItem.Action:= Action;
 end;
end;

...

procedure TMainForm.GridMenuLoad(Grid:tDBGridEh);
 var i: integer;
   NewAction: tAction;
begin

AddMenuItem(TPopupActionBarEx(Grid.PopupMenu), nil);

 NewAction:= tAction.Create(MainForm);
 NewAction.Category:= Grid.Name;
 NewAction.Tag := 0;
 NewAction.Name:= Grid.Name+inttostr(abs(NewAction.Tag));
 NewAction.Caption   := ADataToOf.Caption;
 //NewAction.ImageIndex:= ADataToOf.ImageIndex; // если эту строку раскоментарить, то ошибка на событии OnPopup
 NewAction.Hint      := Grid.Name;
 NewAction.OnExecute := MainForm.AMyExecute;

 AddMenuItem(TPopupActionBarEx(Grid.PopupMenu), NewAction);
end;


Что сделать, чтобы можно было повесить имидж на создаваемый в рантайме пункт попапменю?

Спасибо.


 
Сергей М. ©   (2008-04-17 08:39) [1]


> ошибка


Наверно, секретная)


 
TPopupActionBarEx   (2008-04-17 08:45) [2]

Не, не секретная, но весьма информативная ;)

---------------------------
Debugger Exception Notification
---------------------------
Project My.exe raised exception class EAccessViolation with message "Access violation at address 00486CC4 in module "My.exe". Read of address 00000064". Process stopped. Use Step or Run to continue.
---------------------------
OK   Help  
---------------------------


 
Сергей М. ©   (2008-04-17 09:00) [3]

А кто такое ADataToOf ?
Где и как объявлено и создается ?


 
oxffff ©   (2008-04-17 09:10) [4]

А ImageList как заполняется?


 
TPopupActionBarEx   (2008-04-17 09:12) [5]

Виноват. Пропустил.

type
 TMainForm = class(TForm)
 ...
 ADataToOf: TAction;
 ...
 procedure ADataToOfExecute(Sender: TObject);
 ...
 end;


До процедуры не доходит. На правом клике на гриде ошибка. Если меню создавать без имиджа, либо не в рантайме, то все работает. Процедура отрабатывает нормально.


 
TPopupActionBarEx   (2008-04-17 09:13) [6]


> oxffff ©   (17.04.08 09:10) [4]
>
> А ImageList как заполняется?

Заполнен заранее. Никакого рантайма.


 
oxffff ©   (2008-04-17 09:15) [7]


> TPopupActionBarEx   (17.04.08 09:13) [6]


А индексы корректные?


 
TPopupActionBarEx   (2008-04-17 09:18) [8]


> А индексы корректные?

Да


 
oldman ©   (2008-04-17 09:22) [9]

Так может добавить
NewAction.ImageList:= ADataToOf.ImageList;
???

Вопрос, конечно глупый, но...


 
Сергей М. ©   (2008-04-17 09:24) [10]

When creating an action dynamically at runtime, set the ActionList property to add the action to an action list or action manager.


 
TPopupActionBarEx   (2008-04-17 09:45) [11]


> Сергей М. ©   (17.04.08 09:24) [10]
>
> When creating an action dynamically at runtime, set the
> ActionList property to add the action to an action list
> or action manager.

Супер!
 NewAction.Caption   := ADataToOf.Caption;
 NewAction.ActionList:= ADataToOf.ActionList;
 NewAction.ImageIndex:= ADataToOf.ImageIndex;
 NewAction.OnExecute := MainForm.ADataToOfExecute;

Искренне спасибо!



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

Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.052 c
2-1208278528
Mag
2008-04-15 20:55
2008.05.18
Создал две динамических объекта и не могу к ним обратиться, как?


2-1208614889
Лунатик
2008-04-19 18:21
2008.05.18
Анимация


8-1180007525
Огнеяр
2007-05-24 15:52
2008.05.18
СОС!!! (Быстрый вывод изображения. OpenGL?)


2-1208846129
switch
2008-04-22 10:35
2008.05.18
Работа с БД Access


3-1197827256
Kley
2007-12-16 20:47
2008.05.18
Возврат товара





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский