Можно ли отсортировать действия в TActionList в Delphi XE IDE?
Когда количество действий в DXE IDE растет, в одном списке действий быстро становится трудно найти действие, которое вы хотите проверить или изменить.
Здесь нет поля поиска / фильтра, как для компонентов, а действия не сортируются автоматически. Сортировка объявлений действий в коде не меняет порядок их отображения в редакторе списков действий.
Даже инкрементальный поиск не работает: если вы сфокусируете панель списка действий и начнете печатать, нажатия клавиш перейдут к инспектору объектов (и вы случайно измените то или иное свойство). Основное раздражение!
Возможно, есть скрытый параметр, взлом реестра (их довольно много для Delphi) или стороннее расширение, которое будет сортировать действия?
2 ответа
Вы можете отсортировать их в файле DFM. Вы хотели бы написать небольшой служебный скрипт для этого.
Или обходной путь - использовать категории, чтобы сделать список действий более управляемым.
Напишите небольшой плагин IDE, который расширяет контекстное меню TActionList с опцией Sort. Для сортировки списка действий вы можете использовать этот код:
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;