Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Димнамическое меню (https://forum.antichat.xyz/showthread.php?t=112252)

Vitaliy-55 21.03.2009 07:01

Димнамическое меню
 
Доброго времени суток!!! Подскажите пожалуйста, каким образом можно выдернуть caption строки из динамического контекстного меню? Оч надо!!!!!!!!!! Заранее спасибо.

slesh 21.03.2009 11:48

Тебе нужно знать дискриптор этого меню. Если знаешь то просто всё.
Код:

var
 buf:array[0..255] of char;
 menu:hmenu;
 x,y:integer;
begin
 menu:= дискриптор меню
 y:=GetMenuItemCount(menu);
 for x:=0 to y-1 do
  begin
    GetMenuString(menu,x,buf,256,mf_ByPosition);
    memo1.lines.add(buf);
 end;

Если нужно продолжить выдирать из вложеного меню, то делаешь
GetMenuItemInfo(Menu: HMenu; ID, Flags: Word; Info:TMenuItemInfo)ж
и тогда Info.hSubMenu - будет дискриптором вложенного меню, с которым делаешь всё также что и с предыдущем.

Главное чтобы твоё меню было уже вызвано. т.е. вызываешь его, находиш его дискриптор и вперед

slesh 21.03.2009 11:53

P.S. т.е. меню динамическое, то и заполняется при своём появлении, так что дискрипторы будут разные всегда.

Vitaliy-55 21.03.2009 13:45

slesh, Спасибо те! Помог здорово!

Vitaliy-55 21.03.2009 13:51

Еще вопрос. Как во время открытия динамического меню, проверить базу на наличие данных в ячейке?

Vitaliy-55 21.03.2009 13:54

и если ячейка не пуста, тогда отметиь пункт меню(TMenuItem.checked)???

slesh 21.03.2009 20:56

Цитата:

Сообщение от Vitaliy-55
и если ячейка не пуста, тогда отметиь пункт меню(TMenuItem.checked)???

CheckMenuItem юзай


Время: 10:43