Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2013
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
manejo de threads ...

hola amigos,

La verdad no he usado threads porque, en teoria, no me han hecho falta .
tengo una aplicacion que se conecta remotamente a una base de datos firebird y quería poder poner un progressbar mientras se espera que se carguen algunos datos.
Ya estuve mirando sobre los threads con algunos enlaces que habeis recomendado pero no me aclaro mucho.
Mi idea es que saque el progressbar en pantalla mientras se carguen los datos o una animacion, el caso es que no parezca que se ha congelado la aplicacion mientras esta en el proceso.

Estaba probando este ejemplo pero no va muy bien:
Código Delphi [-]
type
{ TMiHilo }

  TMiHilo = class(TThread)
  private
    procedure AvanzaBarra;
  protected
    procedure Execute; override;
  public
    constructor Create(CreateSuspended: boolean);
  end;


  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
    MiHilo : TMiHilo;
    begin
        //creamos el hilo, pero no lo iniciamos
        MiHilo := TMiHilo.Create(True); // Con el parametro true no se inicia automaticamente
        if Assigned(MiHilo.FatalException) then
           raise MiHilo.FatalException;
        //si no hay ninguna excepción lo iniciamos
        MiHilo.Start;

end;
{ TMiHilo }

procedure TMiHilo.AvanzaBarra;
//Este metodo solo es llamado por Synchronize(@AvanzaBarra) y por ello
// es ejecutado por el hilo principal.
//El hilo principal puede acceder a los elementos visuales del GUI por ejemplo a la progressbar
begin

    Form1.ProgressBar1.StepIt;

    if Form1.ProgressBar1.Position = Form1.ProgressBar1.Max then begin
        Form1.ProgressBar1.Position := 0;
    end;
end;

//Este proceso se ejecuta al iniciar el hilo
procedure TMiHilo.Execute;
begin

    //mientras no termine y sea verdadero se ejecutará
    while (not Terminated) and (true) do begin
        //este loop es del hilo principal
        Synchronize(@AvanzaBarra);
    end;
end;

constructor TMiHilo.Create(CreateSuspended: boolean);
begin
    //Con esta propieda del hilo no necesitamos liberarlo manualmente al terminar de ejecutar el hilo
    FreeOnTerminate := True;
    inherited Create(CreateSuspended);
end;


end.

Le doy al botón para que inicie pero no se llena la barra.
Ademas no veo donde puedo colocar el codigo para que mi aplicacion continue.

Si me orientais un poco .
Responder Con Cita
 



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
Manejo de threads ivanloco Varios 6 21-07-2008 06:20:29
uso de threads JULIPO API de Windows 2 25-07-2007 16:09:06
manejo de arbol de contenidos y manejo se sonido y video Buelos Internet 4 09-07-2007 14:52:45
threads multihilo walito API de Windows 5 13-06-2007 19:34:26
Manejo de threads en Delphi dmasson Varios 3 16-04-2004 15:22:58


La franja horaria es GMT +2. Ahora son las 09:40:27.


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