Конференция "WinAPI" » Проблема с TMainMenu (Delphi 7) в Window 7 [D7, Win2k]
 
  • GreyWolf83 (24.04.11 15:54) [0]
    Столкнулся со следующей проблемой: в 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;

  • GreyWolf83 (24.04.11 19:21) [1]
    Всем спасибо, проблема была решена заменой типа всех пунктов меню верхнего уровня с TTntMenuItem на TMenuItem
  • sniknik © (24.04.11 20:59) [2]
    т.е. установил себе TNT... зачем? наверное чтобы юникод в интерфейсе поддержать (они же для этого), а после "решил проблему" убрав...

    как оно теперь у тебя смотрится когда язык "для не юникодных программ", английский например стоит?
  • GreyWolf83 (24.04.11 21:23) [3]
    Нормально смотрится. Язык пока только английский, идея использования Tnt пунктов меню была чтобы в MRU листе в меню отображались любые имена файлов. А все пункты меню верхнего уровня - на английском.
 
Конференция "WinAPI" » Проблема с TMainMenu (Delphi 7) в Window 7 [D7, Win2k]
Есть новые Нет новых   [134431   +13][b:0][p:0.001]