#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;
Но оба варианта хорошо работают, лишь когда нет вложенных пунктов. Иначе получается фигня. С чем это может быть связано?