Ver Mensaje Individual
  #4  
Antiguo 09-03-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por bothy Ver Mensaje
...tiene alguna funcion o propiedad asi como sort para ordenar los numeros que balla introduciendo en un listbox .
si en la propiedad sorted del litsbox la activo y me ordena alfabeicamente y yo lo que quisiera saber como le hago para que ordene numericamente.

Si son pocos números y el tema de velocidad no es muy importante, a veces he utilizado un TStringList a modo de intermediario.

(0) Desactivar el orden del ListBox.
(1) Copias todos los números al TSttingList pero formateandolos como cadenas con ceros a la izquierda; 00001, 00023, 00167,...
(2) Mandas ordenar ese StringList, que en este caso los ordena como cadenas, pero con la ordenación numérica correcta.
(3) Un for que los vuelve a copiar al ListBox convirtiéndolos a números.

Ya se no, es nada "sofisticado" pero para 1000, 5000,... números es inmediato.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  TS:TStringList;
  str:string;
  i, j:Integer;
begin
  TS := TStringList.Create();
  try
    // Recorrer la lista y almacenarlo en la Lista intermedia    
    for i := 0 to (ListBox1.Items.Count - 1) do begin
      Str := DupeString('0', 10) + ListBox1.Items[i];
      Str := Copy(Str, Length(Str) - 10, Length(Str));
      TS.Add(Str)
    end;

    //ordenar
    TS.Sorted := True;

    // Limpiar la original
    ListBox1.Items.Clear;

    // Volver a pasarlos a la original
    for i := 0 to (TS.Count - 1) do begin
      j := StrToInt(TS[i]);
      ListBox1.Items.Add(IntToStr(j));
    end;

  finally
    FreeAndNil(TS);
  end;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita