Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.027 c
14-84677
drin
2003-06-09 04:42
2003.06.26
Всем любителям современной отличной клубной музыки


7-84776
Andy
2003-04-16 11:47
2003.06.26
Сменить Volume ID


1-84198
VISA
2003-06-12 11:09
2003.06.26
Как оставить на форме только 2 системные кнопки?


14-84577
Sam
2003-06-07 19:35
2003.06.26
Hosting for Delphi


1-84396
Charly
2003-06-09 14:42
2003.06.26
Мышь - управление с клавиатуры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский