Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2006
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Question Problemas al mostrar el progreso con TGauge

Dos inquitudes

Holas amigos de este foros
Les traigo dos interrogante, les explico:

Tengo en un Tform
- 1 TADOQuery
- 1 TGauge
- 1 TLabel
- 1 TBitBtn

Quiero que a medida que valla recorriendo la tabla, se me valla mostrando en el TLabel el contenido del campo Exp y que me muestre el progreso en el TGauge.

Les muestro el código

Código Delphi [-]
procedure TEstadoForm.BitBtn1Click(Sender: TObject);
var
 Prog : Integer;
begin
    ADOQuery1.Open;
 
{1} Label1.Caption := 'Procesando ...';
{2} Prog := trunc(100 / ADOQuery1.RecordCount);

    ADOQuery1.First;
    While not(ADOQuery1.Eof) do
       begin
        ...
{3}     Label1.Caption := 'Expediente ' + ADOQuery1Exp.AsString;
        Gauge1.Progress := Gauge1.Progress + Prog;
        ...  
        ADOQuery1.Next;
       end;
    Gauge1.Progress := 100;
    Label1.Caption := 'Completado';

end;
Inquietudes

1ro - Al recorrer la tabla no me actualiza el valor del caption del label1, sino que se queda con el que tenía en tiempo de diseño, esto ocurre hasta que no sale del bucle While. (ver en el código {1}, {3})
2do - Cuando el ADOQuery1.RecordCount > 100 la variable prog = 0 y no veo el progreso del Gauge; (ver en el código {2})

Alguien podría ayudarme !!!

Gracias
Saludos Ledian
Responder Con Cita
  #2  
Antiguo 27-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
procedure TEstadoForm.BitBtn1Click(Sender: TObject);
begin
    ADOQuery1.Open;
 
{1} Label1.Caption := 'Procesando ...';
      ProgressBar1.Max := Adoquery1.RecordCount; // nos quitamos el problema del número de registros.

    ADOQuery1.First;
    While not(ADOQuery1.Eof) do
       begin
        ...

{3}     Label1.Caption := 'Expediente ' + ADOQuery1Exp.AsString;
         Label1.Update; // forzamos un pintado del label
         ProgressBar1.StepIt; // aumentamos en uno
        ...  
        ADOQuery1.Next;
       end;
    ProgressBar1.Position := ProgressBar1.Max;
    Label1.Caption := 'Completado';

end;
Como ves uso un ProgressBar, ya que tiene el método StepIt y ahorramos la variable Prog.
Cita:
Alguien podría ayudarme !!!
Ledian
Espero que sí

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 27-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TEstadoForm.BitBtn1Click(Sender: TObject);
begin
    ADOQuery1.Open;
 
{1} Label1.Caption := 'Procesando ...';
      ProgressBar1.Max := Adoquery1.RecordCount; // nos quitamos el problema del número de registros.
    Application.ProcessMessages;
    ADOQuery1.First;
    While not(ADOQuery1.Eof) do
       begin
        ...

{3}     Label1.Caption := 'Expediente ' + ADOQuery1Exp.AsString;
         Label1.Update; // forzamos un pintado del label
         ProgressBar1.StepIt; // aumentamos en uno
        ...  
        ADOQuery1.Next;
       end;
    ProgressBar1.Position := ProgressBar1.Max;
    Label1.Caption := 'Completado';

end;
Yo solamente le añadiria lo que queda en negrita para que se actualice convenientemente la barra de progreso.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 27-10-2006
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Aun mas

Amigos todo va muy bien y me funciona de maravilla.
Muchas gracias por todo.

Pero ahora como podría quitarle al TGauge el signo de %.
Supongamos que mi tabla tenga 500 registros
En el progreso vemos --> 45% .. 346% .. 500%
quisiera ver --> 45 .. 346 .. 500

Saludos Ledian.
Responder Con Cita
  #5  
Antiguo 27-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Por eso mismo uso un TProgressBar, así puedes situar un Label encima y transparente con el texto que quieras.

Para Marcos:
Pensé en el Application.ProcessMessages, pero, ralentiza el bucle, por eso opté por el Update. Creo que funciona y no requiere mirar la cola de mensajes.

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 27-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Para Marcos:
Pensé en el Application.ProcessMessages, pero, ralentiza el bucle, por eso opté por el Update. Creo que funciona y no requiere mirar la cola de mensajes.
Tienes razón Lepe, con el Update funciona y solamente se preocupa de actualizar el componente Tlabel, lo cual ralentiza el mínimo posible.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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
Mostrar progreso de descarga de IndyFTP con barra de progreso devicer Internet 2 05-12-2005 14:59:32
Como hago para mostrar una barra de Progreso jimmyx017 Varios 7 16-06-2005 16:06:05
Enviar un Stream y mostrar el progreso johncook Internet 0 22-10-2004 17:05:43
como se asocia una consulta SQL(10 mil regs.) con TGAUGE JoseBozzano Varios 1 14-09-2004 16:33:58
Problemas al mostrar la ayuda i.larranaga API de Windows 0 08-06-2004 09:30:26


La franja horaria es GMT +2. Ahora son las 18:51:08.


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