Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 01-07-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
He notado que el problema planteado es muy recurrente. Es como si las propiedades Busy y ReadyState de TWebBrowser, por sí solas, no fueran del todo fiables.

Hace tiempo implementé esta solución. Ojalá a ti también te resulte útil.

Código Delphi [-]
Unit WaitWebBrowser;

Interface

  Uses
    ShDocVw, ActiveX;

  Type
    TWaitWebBrowser = Class (TWebBrowser)
      Protected
        { Fields }
        WaitingForDocumentComplete :Boolean;

        { Static methods }
        Function GetIdle :Boolean;

        { Overridden methods }
        Procedure InvokeEvent (DispID :TDispID; Var Params :TDispParams);
          Override;
      Public
        { Static methods }
        Procedure NavigateWait (Const URL :String);
        Procedure WaitForIdle;

        { Properties }
        Property Idle :Boolean Read GetIdle;
    End;

Implementation

  Uses
    Forms;

  { TWaitWebBrowser }

  { Protected static methods }

  Function TWaitWebBrowser.GetIdle :Boolean;
  Begin
    Result := Not WaitingForDocumentComplete And Not Busy And
      (ReadyState = ReadyState_Complete);
  End;

  { Protected overridden methods }

  Procedure TWaitWebBrowser.InvokeEvent (DispID :TDispID;
    Var Params :TDispParams);
  Begin
    If DispID = 250 Then  // OnBeforeNavigate2
      WaitingForDocumentComplete := True
    Else
      If (DispID = 259 { OnDocumentComplete }) And
      (ReadyState = ReadyState_Complete) Then
        WaitingForDocumentComplete := False;

    Try
      Inherited InvokeEvent (DispID, Params);
    Except
      WaitingForDocumentComplete := False;
      Raise;
    End;
  End;

  { Public static methods }

  Procedure TWaitWebBrowser.NavigateWait (Const URL :String);
  Begin
    Navigate (URL);
    WaitForIdle;
  End;

  Procedure TWaitWebBrowser.WaitForIdle;
  Begin
    Repeat
      Forms.Application.ProcessMessages;
    Until Idle;
  End;

End.

Código Delphi [-]
WaitWebBrowser1.NavigateWait ('http://www.clubdelphi.com/');

Un saludo.

Al González.
P.D. Miguel, te recomienzo esforzarte en el empleo adecuado de acentos. Con ello te darás a entender mejor en tus siguientes intervenciones.
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
Delay al conectarse con el sevidor MySQL golf2008 MySQL 2 05-02-2009 01:22:22
Ayuda WebBrowser cosuroca Internet 3 11-09-2008 15:24:27
crea ayuda de aplicacion con WebBrowser Yensis22 Internet 0 27-08-2008 02:32:05
Ayuda con WebBrowser JulioGO Varios 2 09-05-2005 05:02:57
Delay de Pascal Esau OOP 4 28-08-2003 21:32:11


La franja horaria es GMT +2. Ahora son las 19:03:14.


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