FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Ordenar un TListBox
¿Cómo puedo ordenar (de menor a mayor numéricamenete hablando y de una forma sencilla) un TListBox que se llena con cadenas que representan números positivos y negativos?
Gracias de antemano. |
#2
|
|||
|
|||
la propiedad sorted a true no te sirve?
|
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
|||
|
|||
Cita:
|
#5
|
||||
|
||||
Wop!
Pues a mi la manera más sencilla que se me ocurre es cargar la lista en un vector de enteros, ordenar el vector y depues recargar la lista.
__________________
E pur si muove |
#6
|
||||
|
||||
Es increíble pero realmente no parece haber manera de hacerlo con el mismo ListBox no quedando más remedio que utilizar algo externo como indica marto. Para facilitar un poco las cosas y no tener que implementar uno mismo el algoritmo de ordenación puede usarse esta técnica que me encontré en una búsqueda por la red:
1. Asignar los elementos de ListBox1.Items a un StringList 2. Usar el método CustomSort del StringList 3. Devolver los elementos al ListBox Quedaría algo así: Código:
function CompareNumbers(List: TStringList; Index1, Index2: Integer): Integer; var Number1, Number2: Integer; begin Number1 := StrToInt(List[Index1]); Number2 := StrToInt(List[Index2]); if Number1 < Number2 then Result := -1 else if Number1 = Number2 then Result := 0 else Result := 1; end; procedure SortList(ListBox: TListBox); var List: TStringList; begin List := TStringList.Create; try List.AddStrings(ListBox.Items); List.CustomSort(CompareNumbers); ListBox.Clear; ListBox.Items.AddStrings(List); finally List.Free; end; end; |
|
|
|