Ver Mensaje Individual
  #2  
Antiguo 21-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 21-04-2014 a las 13:14:31. Razón: corrección
Responder Con Cita