Yes, simply use TStringList.CustomSort() to sort the strings however you want, eg:
function MySortFunc(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := StrToInt(Copy(List[Index2], 4, MaxInt)) - StrToInt(Copy(List[Index1], 4, MaxInt));
end;
...
var SL: TStringList;
SL := TStringList.Create;
...
SL.Add('ABC10');
SL.Add('ABC1');
SL.Add('ABC2');
SL.Add('ABC21');
SL.CustomSort(@MySortFunc);
...
SL.Free;