| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
mirey Cdt

Registrado: 10 May 2007Mensajes: 15
|
Publicado: Sab 12 May, 2007 5:36 am Asunto: progressbar |
|
|
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 |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Sab 12 May, 2007 1:59 pm Asunto: |
|
|
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 |
|
 |
mirey Cdt

Registrado: 10 May 2007Mensajes: 15
|
Publicado: Sab 12 May, 2007 3:24 pm Asunto: |
|
|
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  |
|
| Volver arriba |
|
 |
mirey Cdt

Registrado: 10 May 2007Mensajes: 15
|
Publicado: Sab 12 May, 2007 3:24 pm Asunto: |
|
|
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  |
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Dom 13 May, 2007 5:42 pm Asunto: |
|
|
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...
Si necesitas algo más, pregunta. Suerte! _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
mirey Cdt

Registrado: 10 May 2007Mensajes: 15
|
Publicado: Mar 15 May, 2007 2:30 pm Asunto: |
|
|
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 |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Mie 16 May, 2007 6:10 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Jue 17 May, 2007 4:37 pm Asunto: |
|
|
Ya tengo hecho un ejemplo con la barra tuya, César.
Pero me va brusco... por qué?? _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 17 May, 2007 5:48 pm Asunto: |
|
|
| 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  _________________
 |
|
| Volver arriba |
|
 |
|