Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ayuda con un ProgressBar.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ayuda con un ProgressBar. Responder citando

Un Saludo amigos, veran tengo un ProgressBar en una aplicacion, el cual me muestra en un label el valor en % del avance, la accion que controla el label es el borrado de una base de datos. El problema es que no me lo hace en tiempo real, me explico, el label no cambia hasta que no realiza el borrado total. He probado el codigo sin realizar dicho borrado y el label cambia a la vez que avanza el progressbar, pero cuando realiza el borrado no.

el codigo es el siguiente
Código:

          do
          {
          diario->Delete();
          barra1->Position ++;
          Label1->Caption=String( barra1->Position)+"%";
          }
          while (!diario->Eof);

Gracias de antemano
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

cambia el label por un StaticText y ya me contarás

Saludos, Bosoft.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias bosoft, así funciona de maravilla.
Gracias y un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Puedes agregar esta linea:

Application->ProcessMessages();

Código:

          do
          {
          diario->Delete();
          barra1->Position ++;
          Label1->Caption=String( barra1->Position)+"%";
          Application->ProcessMessages();
          }
          while (!diario->Eof);

_________________
Read what I mean, not what I write!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Yo lo tengo hecho con un TLabel. He definido una función:
Código:
void __fastcall TfForm1::CreaBarra()
{
     Panel3->AutoSize = false;
     Panel3->Height += 30;
     Panel3->Repaint();

     Estado = new TStatusBar(this);
     Estado->Parent      = Panel3;
     Estado->Align       = alTop;
     Estado->Font->Style = TFontStyles() <<fsBold>Repaint();
     Panel4->AutoSize = true;

     Barra = new TProgressBar(this);
     Barra->Parent   = Estado;
     Barra->Align    = alClient;
     Barra->Min      = 0;
     Barra->Position = 0;
     Barra->Smooth   = true;
     SendMessage(Barra->Handle, PBM_SETBARCOLOR, 0, clBarra);
                                                     
     Aviso = new TLabel(this);
     Aviso->Parent      = Barra;
     Aviso->Align       = alClient;
     Aviso->Alignment   = taCenter;
     Aviso->Font->Style = TFontStyles() <<fsBold>Transparent = true;
     Aviso->Caption     = "";
     Aviso->Layout      = tlCenter;
     Aviso->BringToFront();
     Panel3->AutoSize = true;
     Panel3->Repaint();
     Application->ProcessMessages();
}
//---------------------------------------------------------------------------

La barra está definida dentro de un TPanel que hay en el formulario y como ves está hecha con un TLabel. La función la llamo cuando me hace falta; por ejemplo:
Código:
CreaBarra();
Aviso->Caption = "EXTRAYENDO DATOS ";

Query->Close();
Query->UnPrepare();
Query->SQL->Text = "SELECT DISTINCT Mes, Marca, Tipo FROM 'Resultado.db' WHERE Anyo = " + cAnual0 + " OR Anyo = " + cAnual1;
Query->Prepare();
Query->Open();

Barra->Max = Query->RecordCount;
while (!Query->Eof)
{
     Barra->Position ++;
     [...]
     Query->Next();
}
delete Barra;

A mi me funciona bien así.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.