Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2009
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 21
white_zombie Va por buen camino
A simple vista ha varias cosas que no estan bien, te recomiendo que para crear el hilo vayas a File-new-Other-Thread object, te pide el nombre que deseas darle al hilo en tu caso TMyhilo. Te queda esto.

Código Delphi [-]
unit Unit2;

interface

uses
  Classes;

type
  TMyhilo = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation

{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TMyhilo.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TMyhilo }

procedure TMyhilo.Execute;
begin
  { Place thread code here }
end;

end.

Para llamar a este hilo por ejemplo desde la unidad principal

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  hilo:Tmyhilo;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
hilo:=Tmyhilo.Create(true);
hilo.Resume;
end;

Mas cosas, como veras que pone en el codigo del thread no se debe desde un hilo cambiar propiedades ni usar metodos de componentes visuales.
Para esto de usar Synchronize.

Un ejemplo

Código Delphi [-]
unit Unit2;

interface

uses
  Classes,windows;

type
  TMyhilo = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure update_label;
  end;

implementation

uses unit1;

procedure TMyhilo.Execute;
begin
  Synchronize(update_label);
end;

procedure TMyhilo.update_label;
begin
 form1.Label1.Caption:='Esto es una prueba';
end;

end.

Echale un vistazo a esto y comparalo con tu codigo.
Te recomiendo leer sobre el tema porque hay muchas cosas que saber antes de empezar a programar, los manuales que te recomende en mi primer post explica todo esto.

Última edición por white_zombie fecha: 16-01-2009 a las 22:43:12.
Responder Con Cita
  #2  
Antiguo 16-01-2009
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.144
Poder: 21
kurono Va por buen camino
ok probare eso ahora
Responder Con Cita
  #3  
Antiguo 17-01-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 21
Kipow Va por buen camino
Tenes que instanciar la variable, hacelo como te lo pongo y deberia de funcionar.

Código Delphi [-]
procedure TForm1.prueba1Click(Sender: TObject);
begin
 MyHilo := TMyhilo.Create(true);
 Myhilo.Resume;
end;
Responder Con Cita
  #4  
Antiguo 15-01-2011
Philip_ Philip_ is offline
No confirmado
 
Registrado: abr 2010
Posts: 8
Poder: 0
Philip_ Va por buen camino
Mira este ejemplo explica algo

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TFPrincipal = class(TForm)
EContador: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
Tcontador= class(TThread)
dwTiempoword;
iSegundos:integer;
Etiqueta:Tlabel;
constructor Create; reintroduce ; overload ;
procedure execute; override;
procedure ActualizarPantalla;
end;

var
FPrincipal: TFPrincipal;
Contador:Tcontador;

implementation

{$R *.dfm}

{ Tcontador }

procedure Tcontador.ActualizarPantalla;
begin
Etiqueta.Caption:=IntToStr(iSegundos);
end;

constructor Tcontador.Create;
begin
inherited Create(True);//lamamos al constructor padre (TThread)
dwTiempo:=GetTickCount;
iSegundos:=0;
end;

procedure Tcontador.execute;
begin
inherited;
//CONTAMOS HASTA 10SEGUNDOS
while iSegundos<10 do
//¿an pasado 1000 milisegundos?
if GetTickCount - dwTiempo>1000 then
begin
//incrementamos el contador de segundos y actualizamos la etiqueta
Inc(iSegundos);
Synchronize(ActualizarPantalla);
//Etiqueta.Caption:=IntToStr(iSegundos);
dwTiempo:=GetTickCount;

end;

end;

procedure TFPrincipal.FormCreate(Sender: TObject);
begin
Contador:=Tcontador.Create(True);
Contador.Etiqueta:=EContador;
Contador.FreeOnTerminate :=True;
Contador.Resume;
end;

end.
Responder Con Cita
  #5  
Antiguo 15-01-2011
Philip_ Philip_ is offline
No confirmado
 
Registrado: abr 2010
Posts: 8
Poder: 0
Philip_ Va por buen camino
por cierto el formulario se llama FPrincipal y se coloco en el un label que se llama EContador
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como crear hilos de ejecucion en delphi 2007 pablopessoa Varios 1 23-10-2008 19:11:08
Ayuda Con Hilos(Threds) juangiron OOP 1 04-05-2007 19:46:24
Aplicacion con varios Hilos de Ejecución samantha jones Varios 1 02-03-2005 17:27:24
Hilos de ejecucion el toluca Varios 2 29-06-2004 22:59:04


La franja horaria es GMT +2. Ahora son las 01:28:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi