Cita:
Empezado por bothy
...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
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;
TS.Sorted := True;
ListBox1.Items.Clear;
for i := 0 to (TS.Count - 1) do begin
j := StrToInt(TS[i]);
ListBox1.Items.Add(IntToStr(j));
end;
finally
FreeAndNil(TS);
end;
end;