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 14-04-2010
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Generar Mostrar listado lentamente

Hola amigos..
requiero llenar un listbox u otro control con un conjunto de resultados que se iran generando de un ciclo, la idea es simular dicha generacion para hacer mas claro el ejemplo a tal fin estoy utilizando
Código Delphi [-]
sleep(numero)
para conseguir que el proceso no sea tan rapido (por asunto de la simulacion del ejemplo que voy a implementar)
el problema es que el sleep me para el proceso de tal manera que solo veo los resultado al final y no es lo que quiero, quiero que se muestre una linea - pausa - otra linea - pausa y asi hasta el final

Gracias por su ayuda....
Responder Con Cita
  #2  
Antiguo 14-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.075
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y podemos ver tu código?
Responder Con Cita
  #3  
Antiguo 14-04-2010
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 kenobi.

Lo que sucede es que el retardo lo tenes que poner cuando "dibuja" el texto, interceptando el evento OnDrawItem del ListBox.

Asocia este código a dicho evento:
Código:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
   with ListBox1 do
     Canvas.TextRect(Rect,Rect.Left,Rect.Top,Items[Index]);
   Sleep(50); // o lo que quieras...
end;
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 14-04-2010
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
El codigo

Hola la solucion de colocar en el ondraw no me funciono
a tal fin coloco el fragmento de codigo ...

Código Delphi [-]
for i := 1 to elNumero do
begin
  if (elNumero mod i = 0) then ListaNumero.Items.Add(IntToStr(i));

  Sleep(2);
end;
Responder Con Cita
  #5  
Antiguo 14-04-2010
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Yo mismo me respondo asi funciona

Código Delphi [-]
for i := 1 to elNumero do
begin
  if (elNumero mod i = 0) then
  Begin
  ListaNumero.Items.Add(IntToStr(i));
  listaNumero.Refresh;
  Sleep(100);
  End;
end;

todo consiste en refrescar el listbox en cada iteraccion

gracias por todo amigos
Responder Con Cita
  #6  
Antiguo 14-04-2010
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 de nuevo.

Perdón,no funciona por que olvidé decirte que pongas la propiedad Style del ListBox a ibOwnerFixedDraw. (nosotros dibujamos)

Es más eficiente que hacer un Refresh por cada iteración, pero para pocos datos, va en gustos...


Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 15-04-2010 a las 20:51:21.
Responder Con Cita
  #7  
Antiguo 15-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola kenovi, puedes colocar Application.ProcessMessage en tu ciclo en ves del Refresh.

Código Delphi [-]
for i := 1 to elNumero do
begin
  Application.ProcessMessages;
  if (elNumero mod i = 0) then
  Begin
    ListaNumero.Items.Add(IntToStr(i));
    Sleep(100);
  End;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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
Generar listado con totales en QuickReport David Conexión con bases de datos 10 08-06-2007 11:22:37
Mostrar un listado MadeInBsAs OOP 3 26-12-2005 21:20:58
mostrar o no mostrar un control en un DBCTRLGRID segun la fila gesteban OOP 0 10-11-2005 17:21:11
Listado de PC´s Sergio J. Varios 8 03-01-2005 10:41:11
generar listado de horas acrophet Varios 3 10-06-2004 17:04:50


La franja horaria es GMT +2. Ahora son las 21:26:49.


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