Programación General > C++ Builder

 Ejemplo De Hilo

(1/1)

seth_los:
Hola a todos Buenas tardes...

he estado buscando un ejemplo de TThread muy sencillo que tenga me nos de lo necesario (es un decir)... algo como esto quiero hacer una aplicacion que tengo un TButton un Label, y por medio del Button se pueda crear un contador... la idea esta que muestre en el formulario los valores del contador algo asi..
1 , 2 , 3 , 4 ,  5 .... en el caption de label esto se puede hacer muy facil usando TTimer pero no quiero usar este componente quiero hacerlo por medio de hilos osea un derivado de TThread... que cuando se use el boton comienze la aparicion de los numeros en el Label... la verdad si alguien me puede ayudar con este ejemplo se lo agradezco he mirado los ejeplos de builder pero la verdad no lo conprendo bien

Saludos a todos

_Viktor:
Hola, puedes hecharle un vistazo a este ejemplo:

http://elvex.ugr.es/decsai/builder/threads/index.html

Es bastante sencillo de entender.
Saludos!

_Viktor:
Haber si esto te sirve:

Las dos siguientes corresponden al codigo del Thread, la funcion DisplayLabel es utilizada para sincronizar la vcl con el thread, cosa que en este caso no se puede hacer directamente...


--- Código: Text --- //-------THREADED CPP------------------------------------------------------ #include <vcl.h>#include <Classes.hpp>#pragma hdrstop #include "ThreadUnit.h"#pragma package(smart_init)   __fastcall TLabelThread::TLabelThread(bool CreateSuspended)        : TThread(CreateSuspended){}//---------------------------------------------------------------------------void __fastcall TLabelThread::Execute(){  FreeOnTerminate = true;  for(Num=0;Num<=1000;Num++)   {     if(Terminated)break;     Synchronize(DisplayLabel);   }}//---------------------------------------------------------------------------void __fastcall TLabelThread::DisplayLabel(){ ThreadForm->Label1->Caption = Num;}  

--- Código: Text --- //---------THREADED H-------------------------------------------------------- #ifndef ThreadUnitH#define ThreadUnitH//--------------------------------------------------------------------------- #include <Classes.hpp>#include "ThreadFormUnit.h"//---------------------------------------------------------------------------class TLabelThread : public TThread{private:protected:        int Num;        void __fastcall Execute();        void __fastcall DisplayLabel();public:        __fastcall TLabelThread(bool CreateSuspended);};//---------------------------------------------------------------------------#endif  
Lo que sigue corresponde al codigo del formulario principal, "Empezar" es un TButton.


--- Código: Text ---//-----FORMULARIO PRINCIPAL------------------------------------------ #include <vcl.h>#pragma hdrstop #include "ThreadFormUnit.h" //---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TThreadForm *ThreadForm;TLabelThread *Thread;//---------------------------------------------------------------------------__fastcall TThreadForm::TThreadForm(TComponent* Owner)        : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TThreadForm::EmpezarClick(TObject *Sender){ Thread = new TLabelThread(false); Thread->OnTerminate = OnTerminate; Empezar->Enabled = false;}//---------------------------------------------------------------------------void __fastcall TThreadForm::OnTerminate(TObject *){ Empezar->Enabled=true;}  
Haber si te queda un poco mas claro...
Saludos!

Navegación

[0] Índice de Mensajes

Ir a la versión completa