Столкнулся со следующей проблемой: в Windows 7 main menu на форме после модификации (добавления новых пунктов посредством процедуры приведенной ниже) отображается неправильно. В Windows 2000 все OK, а в W7 все названия пунктов меню верхнего уровня начинают отрисовываться на первой позиции, на месте первого, друг на друге. При этом мышкой можно выбирать пункты меню верхнего уровня, синий прямоугольник выделения для каждого на своем месте, но название пункта отрисовывается не на соотв. месте, а в начале строки меню. Есть у кого-то идеи?
procedure TCommonObjects.InsertMenu(Menu: TMenu; Menu2: TMenu;
Owner: TComponent; Indexes: array of Integer);
var
I, J: Integer;
CurItem, NewItem: TTntMenuItem;
begin
for I := 0 to High(Indexes) do
begin
CurItem := TTntMenuItem.Create(Owner);
CurItem.AutoHotkeys := Menu2.Items[I].AutoHotkeys;
CurItem.Caption := Menu2.Items[I].Caption;
CurItem.OnClick := Menu2.Items[I].OnClick;
CurItem.Enabled := Menu2.Items[I].Enabled;
CurItem.Visible := Menu2.Items[I].Visible;
for J := 0 to Menu2.Items[I].Count - 1 do
begin
NewItem := TTntMenuItem.Create(Owner);
NewItem.AutoHotkeys := Menu2.Items[I].Items[J].AutoHotkeys;
NewItem.Caption := Menu2.Items[I].Items[J].Caption;
NewItem.OnClick := Menu2.Items[I].Items[J].OnClick;
NewItem.Enabled := Menu2.Items[I].Items[J].Enabled;
NewItem.ImageIndex := Menu2.Items[I].Items[J].ImageIndex;
NewItem.Visible := Menu2.Items[I].Items[J].Visible;
NewItem.ShortCut := Menu2.Items[I].Items[J].ShortCut;
CurItem.Add(NewItem);
end;
Menu.Items.Insert(Indexes[I], CurItem);
end;
end;