TActionList中的操作可以在Delphi XE IDE中进行排序吗?

时间:2011-09-17 15:53:57

标签: delphi sorting ide delphi-xe tactionlist

当DXE IDE中的操作数量增加时,在单个操作列表中,很难找到要检查或更改的操作。

没有像组件那样的搜索/过滤器框,并且操作不会自动排序。在代码中对操作声明进行排序不会改变它们在动作列表编辑器中的显示顺序。

甚至不进行增量搜索:如果您关注动作列表窗格并开始键入,则按键将转到对象检查器(并且您无意中更改了某些属性或其他属性)。主要的烦恼!

是否存在隐藏设置,注册表黑客攻击(Delphi中存在相当多的内容),或者可能是第三方扩展可以保持操作排序?

2 个答案:

答案 0 :(得分:4)

编写一个小型IDE插件,使用Sort选项扩展TActionList的上下文菜单。要对动作列表进行排序,您可以使用以下代码:

procedure SortActions(ActionList: TActionList);
var
  act: TContainedAction;
  arr: TArray<TContainedAction>;
  I: Integer;
begin
  SetLength(arr, ActionList.ActionCount);
  for I := 0 to ActionList.ActionCount - 1 do begin
    arr[I] := ActionList[I];
  end;
  TArray.Sort<TContainedAction>(arr,
    TDelegatedComparer<TContainedAction>.Create(
      function(const Left, Right: TContainedAction): Integer
      begin
        result := CompareText(Left.Name, Right.Name);
      end));
  for I := 0 to High(arr) do
    arr[I].Index := I;
end;

答案 1 :(得分:2)

您可以在dfm文件中对它们进行排序。您可能希望编写一个小实用程序脚本来执行此操作。

或者解决方法是使用类别使操作列表更易于管理。