delphi - TActionList中的 Action 可以在Delphi XE IDE中排序吗?

标签 delphi sorting ide delphi-xe tactionlist

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

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

甚至增量搜索都不起作用:如果您聚焦操作列表 Pane 并开始键入,则按键会转到对象检查器(并且您无意中更改了某些属性或其他)。主要烦恼!

是否可能存在隐藏设置、注册表破解(Delphi 有很多),或者第三方扩展可以保持操作排序?

最佳答案

编写一个小型 IDE 插件,用排序选项扩展 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;

关于delphi - TActionList中的 Action 可以在Delphi XE IDE中排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456003/

相关文章:

visual-studio-2013 - 对象引用未设置为对象的实例 + 使用 Ctrl-V 或鼠标粘贴

Delphi:解析未知结构的记录

delphi - firemonkey 中的 GetKeyState

delphi - Delphi,字符集检测([Uni] SynEdit)-Utf8Decode问题

php - 如何按值对多维数组进行排序?

css - 突出显示编辑到 Netbeans 7.4 或 8.0 的代码行

delphi - 如何在delphi 7中释放字符串列表中的对象?

php - 重新排列 PHP 数组并返回 3 个最低值

javascript - 如何对加载的 XML 数据进行排序

c - 我的 C 代码没有在 Visual Studio 2017 上编译,并且一直给我一个错误,说它找不到特定的文件?