Hola ZayDun.
Podes hacer:
Código Delphi
[-]
procedure SortByUserName(TS: TStrings);
function CompareNom(TS: TStrings; const i1, i2: Integer): Integer;
begin
Result:= CompareText(Copy(TS[i1],4,MaxInt)+Copy(TS[i1],1,3),
Copy(TS[i2],4,MaxInt)+Copy(TS[i2],1,3));
end;
var
SL: TStringList;
begin
SL:= TStringList.Create;
try
SL.Assign(TS);
SL.CustomSort(@CompareNom);
TS.Assign(SL);
finally
SL.Free;
end;
end;
Uso:
Código Delphi
[-]
SortByUserName(ListBox1.Items);
Saludos
Edito: Agregué la concatenación de los números detras en la comparación para que ordene por nombre y a su vez por número.