Главная страница
    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.031 c
1-84383
inspirion
2003-06-09 10:24
2003.06.26
Отмена закрытия приложения


3-83970
Jaxtor
2003-05-29 16:30
2003.06.26
DBGridEh


1-84255
Muskat
2003-06-10 12:25
2003.06.26
dll – string…


1-84089
sapsi
2003-06-10 12:36
2003.06.26
Изменение вида курсора


1-84160
Неплохой человек
2003-06-11 15:45
2003.06.26
Загрузка строк в объект типа TStringList - непонятные глюки





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