![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Ребят, меню создаётся, только никак не могу OnClick задать... Ошибка при попытке ккомпиляции...
Вот мои процедуры: Код:
type TFMain = class(TForm) MainMenu: TMainMenu; ... procedure MenuItemClick(Sender:TObject); private ... procedure CreateMenu(); end; procedure TFMain.CreateMenu(); var MenuPosition:string; MenuItemNames:TStringList; MenuItemsCount,i:cardinal; MenuItems:array of TMenuItem; begin MenuPosition:=LoadPlugin('OilGasSprt', FMain.Handle, 'MenuPosition'); //создаём массив MenuItemNames MenuItemNames:=TStringList.Create(); StrBreakApart(MenuPosition, '<BR>', MenuItemNames); MenuItemsCount:=MenuItemNames.Count; SetLength(MenuItems,MenuItemsCount); //Заполняем массив элементов меню данными из массива MenuItemNames MenuItems[0]:=TMenuItem.Create(FMain); MenuItems[0].Caption:=MenuItemNames[0]; FMain.MainMenu.Items.Add(MenuItems[0]); for i:=1 to MenuItemsCount-1 do begin MenuItems[i]:=TMenuItem.Create(FMain); MenuItems[i].Caption:=MenuItemNames[i]; MenuItems[i-1].Add(MenuItems[i]); end; MenuItems[i].OnClick:=FMain.MenuItemClick(FMain); MenuItemNames.Free(); end; procedure TFMain.MenuItemClick(Sender:TObject); begin ShowMessage('MenuItemClick'); end; |
#2
|
|||
|
|||
![]() Ошибка на строчке:
Код:
MenuItems[i].OnClick:=FMain.MenuItemClick(FMain); По-всякому пробовал... Хотел бы MenuItemClick тоже в приват загнать, но тогда тоже проблемы какие-то... В этом случае её не видно в списке при ручном дообавлении OnClick через ObjectInspector Последний раз редактировалось sorockinalex, 05.11.2012 в 19:57. |
#3
|
||||
|
||||
![]() Цитата:
|
Этот пользователь сказал Спасибо sariman за это полезное сообщение: | ||
sorockinalex (06.11.2012)
|
#4
|
||||
|
||||
![]() глянь мой старый пример: http://www.delphisources.ru/pages/so...ast-start.html там как раз используется то, что те нужно!!
уволен в запас!!! ![]() |
Этот пользователь сказал Спасибо RusMaXXX за это полезное сообщение: | ||
sorockinalex (06.11.2012)
|
#5
|
||||
|
||||
![]() Может лучше так:
Код:
MenuItems[i].OnClick:=FMain.MenuItemClick;//без_скобок_и_параметров_в_скобках Последний раз редактировалось YVitaliy, 05.11.2012 в 20:55. |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
sorockinalex (06.11.2012)
|
#6
|
|||
|
|||
![]() Код:
MenuItems[i].OnClick:=FMain.MenuItemClick; Access violation at address ... Write of address... А в тело цикла как раз не надо, так как последний открытый пункт и является активным.. |
#7
|
|||
|
|||
![]() опа, блин... понял... я думал после цикла последнее значение в переменной i остаётся... Почему оно не остаётся в переменной i???
|
#8
|
||||
|
||||
![]() Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
sorockinalex (06.11.2012)
|