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 

progressbar

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: progressbar Responder citando

Rolling Eyes
necesito que me pasen el codigo para trabajar con el progressbar, es decir no se como hacer que funcione , no tiene que estar ejecutandose ninguna funcion, solo que al presionar un boton el progressbar se valla llenando poco a poco
por favor espero que me ayuden
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Pues es muy básico...

En cualkier evento, por ejemplo en el evento OnClick de un botón, este código te podría servir....

Código:

  for (int i=0; i<=ProgressBar1->Max; i++)
  {
   Application->ProcessMessages();
   Sleep(150);
   Panel1->Caption=String (ProgressBar1->Position+1) + (String) "%  Completado";
   ProgressBar1->Position = i;
  }


En vez de poner "ProgressBar1->Position=i", puedes poner "Progressbar1->StepIt();" (las comillas no, eh?)
Esto aumentará la barra en la cantidad que aparezca en la propiedad "Step".

Para que te hagas una idea de lo que tiene el form, aki tienes parte del archivo de cabecera:

Código:
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TProgressBar *ProgressBar1;
        TLabel *Label2;
        TButton *Button1;
        TPanel *Panel1;
        TLabel *Label1;
        void __fastcall Button1Click(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};


Si lo haces así, y pones un botón para cancelarlo, no se podrá cancelar hasta que finalice el bucle.
Si quieres que se vaya llenando la barra y poder cancelarlo, tiens que hacerlo mediante hilos, y ya eso es más lioso y un poco complicado, aunque yo lo tengo hecho así.

Espero haberte ayudado. Suerte!
_________________
Saludos, Alpha.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Wink
Alpha 120 te lo agradesco muchisimo me has dado tremendisima ayuda
ahora quisiera poder trabajar por hilos y entender mas los procesos de los que me hablas
tienes algo para cancelar la progressbar o hacer que cuando yo cargue la form donde estoy trabajando se me muestre una progressbar y hasta que ella no termine no se ejecute la form aunque esta no sea tan grande , solo para darle apariencia de programa cargando ficheros???
agradesco cualquier ayuda
chao Shocked
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Wink
Alpha 120 te lo agradesco muchisimo me has dado tremendisima ayuda
ahora quisiera poder trabajar por hilos y entender mas los procesos de los que me hablas
tienes algo para cancelar la progressbar o hacer que cuando yo cargue la form donde estoy trabajando se me muestre una progressbar y hasta que ella no termine no se ejecute la form aunque esta no sea tan grande , solo para darle apariencia de programa cargando ficheros???
agradesco cualquier ayuda
chao Shocked
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

De hecho, aqui tienes el código que utilizo yo para poner una barra de progreso y que se pueda cancelar.

Archivo de cabecera del programa principal (Unit1.cpp)

Código:

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TProgressBar *ProgressBar1;
        TLabel *Label2;
        TButton *Button1;
        TPanel *Panel1;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall FormShow(TObject *Sender);
private:   // User declarations
    TThread *bt;
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
        void __fastcall ActLabel(void);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


Ahora el código del Unit1.cpp

Código:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ActLabel(void)
{
   Application->ProcessMessages();
   i++;
   Sleep(150);
   Panel1->Caption=String (ProgressBar1->Position+1) + (String) "% Completado";
   ProgressBar1->Position = i;
   if (i >= 100)
    {
      bt->Terminate();
      Close();
    }
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 if (ProgressBar1->Position == 100)
  {
    bt->Terminate();
  }
} 
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
 i = 0;
 bt = new BotonThread;
}
//---------------------------------------------------------------------------


Ahora el fuente del thread (hilo).

Archivo de cabecera del thread:

Código:

//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class BotonThread : public TThread
{
private:
protected:
    void __fastcall Execute();
public:
    __fastcall BotonThread();
};
//---------------------------------------------------------------------------
#endif


Y el código del thread (Unit2.cpp):
Código:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall BotonThread::BotonThread()
   : TThread(true)
{
    FreeOnTerminate = true;
    Suspended = false;
}
//---------------------------------------------------------------------------
void __fastcall BotonThread::Execute()
{
    while(!Terminated){
        Synchronize(Form1->ActLabel);
    }
    Form1->Close();
}
//---------------------------------------------------------------------------


Con ese código, puedes poner un botón que cancele o cierre la aplicación, si en el evento OnClick de Button 1 pones esto:

Código:

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  bt->Terminate();
}

Supongo que con eso se cerraría, todo es probar... Wink

Si necesitas algo más, pregunta. Suerte!
_________________
Saludos, Alpha.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

alpha 120
te agradesco un mundo lo conciderado que has sido con este desconocedor ya cargue el codigo que me has dado y todo de maravillas gracias!!!
por aca un amigo me dijo algo un poco tosco observa

el las propiedasdes del form1 el Tag=1
Código:

if(Tag=1)
Form1->Close();

que crees?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Pues si te digo la verdad, no sé que es el Tag, lo he mirado en la ayuda y es para guardar otro valor adicional... no sé, tal como yo te lo dí queda perfecto.
_________________
Saludos, Alpha.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Opción Buscar del Foro

https://cppbuilder.es/viewtopic.php?t=10380
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Ya tengo hecho un ejemplo con la barra tuya, César.
Pero me va brusco... por qué??
_________________
Saludos, Alpha.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Alpha120 escribió:
Ya tengo hecho un ejemplo con la barra tuya, César.
Pero me va brusco... por qué??


Me gustaría que mostraras los problemas que te han sucitado, pues asi como esta medio brusco, no llego a imaginar que esta pasando en tu codigo o en tu ordenador Wink
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
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.