Форум: "KOL";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизВ динамически созданныx меню не работает OnClick Найти похожие ветки
← →
blackalex (2002-10-02 11:36) [0]В динамически созданныx меню не работает OnClick.
Вот Код. SubMenus не реагируют на клики. Когда была версия KOL 1.44 , все работало. Поставил 1.51, перестало. Подскажите что делать.
----------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: PObj);
begin
CreateMainMenu;
CreateSubMenu;
end;
procedure TForm1.CreateMainMenu;
begin
mnuMain := NewMenu( Form , 0, [ "&Edit",
"(",
"&Undo Ctrl+Z",
"-",
"Cu&t Ctrl+X",
"&Copy Ctrl+C",
"&Paste Ctrl+V",
"De&lete",
"-",
"SubMenu", // SubMenues , ID = 8
")",
"" ], mnuMainMenuItemClick );
end;
procedure TForm1.CreateSubMenu ;
var
I: Integer;
SubMenu: PMenu;
begin
mnuMain.ItemSubMenu[8] := 0 ;
SubMenu := NewMenu(Form, 0, [ "" ], NIL);
for I:= 0 to 3 do
SubMenu.AddItem (PChar("SubMenu" + Int2Str(I)), mnuSubMenuItemClick, []);
mnuMain.ItemSubMenu[8] := SubMenu.Handle ;
end;
procedure TForm1.mnuMainMenuItemClick(Sender: PMenu; Item: Integer);
begin
MsgOK ("EditMenu" + Int2Str(Item));
end;
procedure TForm1.mnuSubMenuItemClick(Sender: PMenu; Item: Integer);
begin
MsgOK ("SubMenu" + Int2Str(Item));
end;
← →
Vladimir Kladov (2002-10-07 11:42) [1]Теперь для каждого пункта меню свой объект. Связывать через Handle недостаточно. Объект, соответствующий пункту, ищется по дереву объектов, а его там просто нет. Надо видимо вообще выкинуть ItemSubMenu[ ] и сделать присваиваемым Items[ ]. Погляжу, как лучше.
← →
blackalex (2002-10-07 18:17) [2]Привет Владимир,
ошибку я нашел. Это баг в TMenu.Insert. Я тебе пару дней назад писъмо написал. Я сделал следующее.
Добавил в конце функции TMenu.Insert строку FItems.Add (Result) В функтиях TMenu.GetItems и TMenu.IndexOf я сделал проверку
ParentMenu.FItems на NIL , как внизу, и всё заработало
...
if ParentMenu.FItems <> NIL // добавлено
for I := 0 to ParentMenu.FItems.FCount-1 do
begin
Inc( FromIdx );
Result := SearchMenu( ParentMenu.FItems.Items[ I ], FromIdx );
if Result <> nil then Exit;
end;
...
>
Может это и неправилъно. Посмотри пожалуйста
Valerian
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c