按标题对PopupMenu项目进行排序

时间:2014-11-29 07:25:59

标签: delphi

我有TPopupMenu,在运行时添加了项目。我想用标题对它们进行排序:“Abc”,“MyItem”,“Zztop”。我在菜单项列表中找不到Sort方法。

Delphi7的。

1 个答案:

答案 0 :(得分:6)

由于您在运行时添加项目,首选方法是添加已排序的项目 如果您必须将项目添加到已包含项目的菜单中,您可以通过将项目的MenuIndex设置为所需的值来对其进行排序。
一种简单的方法是将Items带到已排序的StringList并从列表中应用MenuInde​​x。

Procedure SortMenuItems(Menu: TPopupMenu);
var
  i: Integer;
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.Sorted := true;
    for i := 0 to Menu.Items.Count - 1 do
    begin
      sl.AddObject(Menu.Items[i].Caption, Menu.Items[i]);
    end;
    for i := 0 to sl.Count - 1 do
      TMenuItem(sl.Objects[i]).MenuIndex := i;
  finally
    sl.Free;
  end;
end;