2011-09-17 4 views
2

DXE IDE의 작업 수가 증가하면 단일 작업 목록에서 검사하거나 변경하려는 작업을 신속하게 찾기가 어려워집니다.TActionList의 액션을 Delphi XE IDE에서 정렬 할 수 있습니까?

구성 요소가있는 것처럼 검색/필터 상자가 없으며 작업이 자동으로 정렬되지 않습니다. 코드에서 액션 선언을 정렬해도 액션 목록 편집기에 표시되는 순서는 변경되지 않습니다.

증분 검색이 작동하지 않습니다. 작업 목록 창에 초점을 맞추고 입력을 시작하면 키 입력이 개체 속성으로 이동하고 실수로 일부 속성이나 기타 항목이 변경됩니다. 큰 성가심!

아마도 숨겨진 설정, 레지스트리 해킹 (델파이에는 상당수가있을 수 있습니다) 또는 조치를 정렬 할 수있는 타사 확장이 있습니까?

+3

dfm 파일에서 정렬하십시오. 그것을 할 수있는 작은 유틸리티를 작성하십시오. 또는 범주를 사용하여 더 쉽게 관리 할 수 ​​있습니다. –

+0

카테고리는 좋은 생각입니다. @ david ide 외부의 dfm을 편집하는 경우, 델파이는 즉시 변경 사항을 실행합니까, 아니면 프로젝트를 다시로드해야합니까? – Johan

+0

ide가 변경된 dfm 파일을 감지하고 다시로드한다고 생각합니다. –

답변

2

dfm 파일에서 정렬 할 수 있습니다. 당신은 그것을하기 위해 약간의 유틸리티 스크립트를 작성하고 싶을 것이다.

또는 대안을 사용하면 작업 목록을보다 쉽게 ​​관리 할 수 ​​있습니다.

4

정렬 옵션을 사용하여 TActionList의 컨텍스트 메뉴를 확장하는 작은 IDE 플러그인을 작성하십시오. 작업 목록을 정렬하려면 다음 코드를 사용할 수 있습니다.

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; 
관련 문제