| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
martinlop2007 Lt JG


Registrado: 20 Feb 2007Mensajes: 67
|
Publicado: Jue 10 Ene, 2008 2:01 pm Asunto: Ayuda con un ProgressBar. |
|
|
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Jue 10 Ene, 2008 2:24 pm Asunto: |
|
|
cambia el label por un StaticText y ya me contarás
Saludos, Bosoft. |
|
| Volver arriba |
|
 |
martinlop2007 Lt JG


Registrado: 20 Feb 2007Mensajes: 67
|
Publicado: Jue 10 Ene, 2008 4:15 pm Asunto: |
|
|
Muchas gracias bosoft, así funciona de maravilla.
Gracias y un saludo. |
|
| Volver arriba |
|
 |
Cri_sys Master


Registrado: 13 Feb 2004Mensajes: 198Ubicación: Maringá, Brazil
|
Publicado: Vie 11 Ene, 2008 11:36 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 14 Ene, 2008 8:26 am Asunto: |
|
|
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 |
|
 |
|