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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.05 c
15-1207665448
Igorek
2008-04-08 18:37
2008.05.18
Проверка Tab Separated файла


9-1169914938
Vovan #2
2007-01-27 19:22
2008.05.18
Освобождение интерфейсов в Direct3D


15-1206999106
TIF
2008-04-01 01:31
2008.05.18
Microsoft призналась, что использовала исходные коды Linux...


2-1208512575
aleko
2008-04-18 13:56
2008.05.18
EnumChildWindows


2-1208758852
Vudu
2008-04-21 10:20
2008.05.18
Как преобразовать char в integer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский