Главная страница
    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.042 c
3-1197624704
novill
2007-12-14 12:31
2008.05.18
IB 7.5 Размер страницы.


15-1207160212
Cyrax
2008-04-02 22:16
2008.05.18
Как из Siemens A62 получить модем для GPRS-интернета...


15-1207558304
GanibalLector
2008-04-07 12:51
2008.05.18
Subscribe.Ru (рассылка от Мастера DELPHI)


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


2-1208603961
lewka-serdceed
2008-04-19 15:19
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский