![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Креатим в рантайме, как избавится от ошибки? [D7, 2000, XP, 2003]
TPopupActionBarEx © (2008-04-17 08:33:00)
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;
Что сделать, чтобы можно было повесить имидж на создаваемый в рантайме пункт попапменю?
Спасибо.
TPopupActionBarEx (2008-04-17 09:45:00) [1]
> Сергей М. © (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;
Искренне спасибо!
Сергей М. (2008-04-17 09:24:00) [2]When creating an action dynamically at runtime, set the ActionListproperty to add the action to an action list or action manager.
oldman (2008-04-17 09:22:00) [3]Так может добавить
NewAction.ImageList:= ADataToOf.ImageList;
???
Вопрос, конечно глупый, но...
TPopupActionBarEx (2008-04-17 09:18:00) [4]
> А индексы корректные?
Да
oxffff (2008-04-17 09:15:00) [5]
> TPopupActionBarEx (17.04.08 09:13) [6]
А индексы корректные?
TPopupActionBarEx (2008-04-17 09:13:00) [6]
> oxffff © (17.04.08 09:10) [4]
>
> А ImageList как заполняется?
Заполнен заранее. Никакого рантайма.
TPopupActionBarEx (2008-04-17 09:12:00) [7]Виноват. Пропустил.
type
TMainForm = class(TForm)
...
ADataToOf: TAction;
...
procedure ADataToOfExecute(Sender: TObject);
...
end;
До процедуры не доходит. На правом клике на гриде ошибка. Если меню создавать без имиджа, либо не в рантайме, то все работает. Процедура отрабатывает нормально.
oxffff (2008-04-17 09:10:00) [8]А ImageList как заполняется?
Сергей М. (2008-04-17 09:00:00) [9]А кто такое ADataToOf ?
Где и как объявлено и создается ?
TPopupActionBarEx (2008-04-17 08:45:00) [10]Не, не секретная, но весьма информативная ;)
---------------------------
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 08:39:00) [11]
> ошибка
Наверно, секретная)