Можно ли отсортировать действия в TActionList в Delphi XE IDE? - PullRequest
2 голосов
/ 17 сентября 2011

Когда количество действий в DXE IDE растет, в одном списке действий быстро становится трудно найти действие, которое вы хотите проверить или изменить.

Нет поля поиска / фильтра, как для компонентов, и действия не сортируются автоматически. Сортировка объявлений действий в коде не меняет порядок их отображения в редакторе списков действий.

Даже инкрементальный поиск не работает: если вы сфокусируете панель списка действий и начнете печатать, нажатия клавиш перейдут к инспектору объектов (и вы случайно измените то или иное свойство). Основное раздражение!

Возможно, есть скрытый параметр, взлом реестра (их довольно много для Delphi) или, возможно, стороннее расширение, которое будет сортировать действия?

Ответы [ 2 ]

4 голосов
/ 18 сентября 2011

Напишите небольшой плагин 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;
2 голосов
/ 17 сентября 2011

Вы можете отсортировать их в файле dfm.Вы могли бы написать небольшой служебный скрипт для этого.

Или обходной путь - использовать категории, чтобы сделать список действий более управляемым.

...