Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2012
ale4132 ale4132 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 13
Poder: 0
ale4132 Va por buen camino
Ordenar numeros de un listbox de mayor a menor o viceversa

Hola gente de club Dephi!!!

Tengo un problema con un listbox, la situacion es la siguiente:

Por medio de un boton genero una cantidad aleatoria de numeros dentro de un listbox, mi pregunta es la siguiente:
como puedo hacer para por medio de otro boton ordenar esos numeros generados anteriormente de mayor a menor o en el caso contrario de menor a mayor. Por favor si es posible utilizando una estructura de trabajo "For ... do" en la programacion.

Muchas gracias!!!
Saludos!!!!
Responder Con Cita
  #2  
Antiguo 16-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 ale4132.

Un modo simple:
Código Delphi [-]
procedure SortListBox(ListBox: TListBox; Asc: Boolean = True);
var
  i,j: Integer;
  aux: string;
  Change: Boolean;
begin
  with ListBox do
  begin
    Items.BeginUpdate;
    for i:= 0 to Items.Count-2 do
      for j:= i+1 to Items.Count-1 do
      begin
        if Asc then
          Change:= StrToInt(Items[i]) > StrToInt(Items[j])
        else
          Change:= StrToInt(Items[i]) < StrToInt(Items[j]);
        if Change then
        begin
          aux     := Items[i];
          Items[i]:= Items[j];
          Items[j]:= aux;
        end;
      end;
    Items.EndUpdate;
  end;
end;

Llamada ejemplo:
Código Delphi [-]
procedure TForm1.btnSortClick(Sender: TObject);
begin
  SortListBox(ListBox1, CheckBoxDesc.Checked);
end;
Donde la condición de ordenamiento ascendente o descendente depende de la propiedad Checked de un CheckBox.

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 17-12-2012 a las 00:38:33.
Responder Con Cita
  #3  
Antiguo 17-12-2012
ale4132 ale4132 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 13
Poder: 0
ale4132 Va por buen camino
Muchas Gracias, la respuesta fue de mucha utilidad.
saludos!!!
Responder Con Cita
  #4  
Antiguo 17-12-2012
ale4132 ale4132 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 13
Poder: 0
ale4132 Va por buen camino
para el caso en que quisiera solo ordenarlos de mayor a menor por medio de un boton como podria hacerlo???
Responder Con Cita
  #5  
Antiguo 17-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
Cita:
Empezado por ale4132 Ver Mensaje
para el caso en que quisiera solo ordenarlos de mayor a menor por medio de un boton como podria hacerlo???
Hola ale4132.

Solamente:
Código Delphi [-]
 SortListBox(ListBox1, False);

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 17-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ale4132,

Cita:
Empezado por ale4132
Como puedo hacer para por medio de otro boton ordenar esos numeros generados anteriormente de mayor a menor o en el caso contrario de menor a mayor.
Revisa este código:
Código Delphi [-]
// Sort de Mayor a Menor.
procedure TForm1.Button9Click(Sender: TObject);
var
   i,j,p : Integer;
begin
   for i := 0 to ListBox1.Count-1 do
      for j := i+1 to ListBox1.Count-1 do
      begin
         if StrToInt(ListBox1.Items.Strings[j]) > StrToInt(ListBox1.Items.Strings[i]) then
         begin
            p := ListBox1.Items.IndexOf(ListBox1.Items.Strings[j]);
            ListBox1.Items.Move(p,i);
         end;
      end;
end;

// Sort de Menor a Mayor.
procedure TForm1.Button10Click(Sender: TObject);
var
   i,j,p : Integer;
begin
   for i := 0 to ListBox1.Count-1 do
      for j := i+1 to ListBox1.Count-1 do
      begin
         if StrToInt(ListBox1.Items.Strings[j]) < StrToInt(ListBox1.Items.Strings[i]) then
         begin
            p := ListBox1.Items.IndexOf(ListBox1.Items.Strings[j]);
            ListBox1.Items.Move(p,i);
         end;
      end;
end;
El código anterior clasifica de Mayor a Menor y viceversa una lista de números en un control TListBox.

Espero sea útil

Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Numero Mayor igual , Menor igual... Problema ZiriusB OOP 12 27-06-2011 17:31:24
Ordenar digitos de menor a mayor luisito2011 Varios 18 06-05-2011 23:37:59
¿como hago para comprobar si un nº de versión es mayor o menor? cocute Varios 8 21-01-2010 11:31:13
Fecha de mayor a menor alcides Varios 2 15-02-2008 16:46:09
ordenar un DBGrid de mayor a menor jmlifi Varios 2 03-11-2005 16:36:34


La franja horaria es GMT +2. Ahora son las 12:27:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi