![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||