当 DXE IDE 中的操作数量增加时,在单个操作列表中,很快就很难找到您想要检查或更改的操作。
没有像组件那样的搜索/过滤框,动作也不会自动排序。对代码中的动作声明进行排序不会改变它们在动作列表编辑器中的显示顺序。
甚至增量搜索也不起作用:如果您关注操作列表窗格并开始输入,则按键会转到对象检查器(并且您无意中更改了某些属性或其他属性)。大烦恼!
是否可能存在隐藏设置、注册表黑客(Delphi 有很多),或者可能是第三方扩展可以保持操作排序?
当 DXE IDE 中的操作数量增加时,在单个操作列表中,很快就很难找到您想要检查或更改的操作。
没有像组件那样的搜索/过滤框,动作也不会自动排序。对代码中的动作声明进行排序不会改变它们在动作列表编辑器中的显示顺序。
甚至增量搜索也不起作用:如果您关注操作列表窗格并开始输入,则按键会转到对象检查器(并且您无意中更改了某些属性或其他属性)。大烦恼!
是否可能存在隐藏设置、注册表黑客(Delphi 有很多),或者可能是第三方扩展可以保持操作排序?
编写一个小型 IDE 插件,使用排序选项扩展 TActionList 的上下文菜单。要对 actionlist 进行排序,您可以使用以下代码:
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;
您可以在 dfm 文件中对它们进行排序。您可能需要编写一个小实用程序脚本来执行此操作。
或者一种解决方法是使用类别来使操作列表更易于管理。