Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 16-11-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Independientemente de sitúes o no el componente de forma "visual", tendrás que usar los eventos que tienes disponibles en la clase "TIdHttp". Se trata, por tanto, de preparar los métodos adecuados para asignarlos a los eventos que necesites usar. Fíjate en el siguiente código.

Código Delphi [-]
type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    procedure FormCreate(Sender: TObject);
  private
    procedure IdHTTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
    procedure IdHTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
    procedure IdHTTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
  end;

Arriba podemos ver que declaramos tres métodos privados en un formulario: en el mismo formulario tenemos un componente "ProgressBar" y también usamos el evento "FormCreate":

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  IdHttp: TIdHTTP;
begin
  IdHttp := TIdHTTP.Create();
  try
    IdHttp.OnWork := Self.IdHTTPWork;
    IdHttp.OnWorkBegin := Self.IdHTTPWorkBegin;
    IdHttp.OnWorkEnd := Self.IdHTTPWorkEnd;

    // IdHttp.Get();
  finally
    IdHttp.Free();
  end;
end;

Arriba vemos el evento "FormCreate", donde usamos utilizamos una variable del tipo "TIdHttp". Como ves, creamos la variable, asignamos los métodos que hemos preparado a los eventos que nos interesa, llevamos a cabo la llamada HTTP "GET", y, finalmente, destruímos la variable. Abajo puedes ver el cuerpo de los métodos en cuestión, preparados para ser asignados a los eventos de "TIdHttp":

Código Delphi [-]
procedure TForm1.IdHTTPWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
  ProgressBar1.Position := AWorkCount;
end;

procedure TForm1.IdHTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  ProgressBar1.Max := AWorkCountMax;
end;

procedure TForm1.IdHTTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  ProgressBar1.Position := 0;
end;

Como ves, en dichos eventos usamos el componente "ProgressBar" que tenemos en el formulario, para mostrar el progreso de la llamada HTTP.

P.D. Nota que aquí no usamos el "Content length" del archivo, sino que establecemos el "máximo" de nuestro "ProgressBar" con la variable "AWorkCountMax" que nos llega en el evento "IdHTTPWorkBegin". De hecho, si no he entendido mal, y, usas el "Content length" del archivo, una vez descargado el mismo... no tendría sentido mostrar ya "ProgressBar" alguno, puesto que el archivo ya ha sido descargado. Tal vez me estoy perdiendo algo...
__________________
David Esperalta
www.decsoftutils.com
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
Realizar un "Post HTTP" con la clase "TIdHttp" de Indy dec Trucos 6 09-10-2018 18:59:40
progressbar 11_8_88 C++ Builder 2 04-11-2008 19:46:33
HTTP GET y HTTP POST utilizando WinInet dec Trucos 6 08-09-2008 11:52:03
Realizar cambios en varios Tmemo al mismo tiempo PaFernan99 OOP 5 26-05-2008 15:35:15
ProgressBar+tiempo en hacer POST HTTP BlackDaemon Internet 18 04-05-2007 01:24:14


La franja horaria es GMT +2. Ahora son las 10:36:34.


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