Вверх ↑
Ответов: 1926
Рейтинг: 172
#1: 2016-04-06 06:21:47 ЛС | профиль | цитата
Вот пример с HiliteMenuItem
#pas
procedure TXPMenu._work_doHighlight;
var Idx:integer;
begin
Idx:= ReadInteger(_Data,_data_Index,_prop_Index);
if (Menu.Count > 0) and (Idx >= 0 ) and (Idx < Menu.Count) then
if Menu.Items[Idx].Highlight then
HiliteMenuItem(FC.Handle, Menu.Handle, Idx, MF_BYPOSITION or MF_UNHILITE)
else HiliteMenuItem(FC.Handle, Menu.Handle, Idx, MF_BYPOSITION or MF_HILITE);
//Menu.Items[Idx].Highlight:= not Menu.Items[Idx].Highlight;
end;

Или так:
#pas
procedure TXPMenu._work_doHighlight;
var Idx:integer;
begin
Idx:= ReadInteger(_Data,_data_Index,_prop_Index);
if (Menu.Count > 0) and (Idx >= 0 ) and (Idx < Menu.Count) then
if Menu.Items[Idx].Highlight then
HiliteMenuItem(FC.Handle, Menu.Handle, Menu.Items[Idx].MenuId, MF_BYCOMMAND or MF_UNHILITE)
else HiliteMenuItem(FC.Handle, Menu.Handle, Menu.Items[Idx].MenuId, MF_BYCOMMAND or MF_HILITE);
//Menu.Items[Idx].Highlight:= not Menu.Items[Idx].Highlight;
end;

Но оба варианта хорошо работают, лишь когда нет вложенных пунктов. Иначе получается фигня. С чем это может быть связано?
карма: 9
0