Einzelnen Beitrag anzeigen

emploi

Registriert seit: 21. Jun 2004
Ort: Ilmtown
40 Beiträge
 
Delphi 7 Enterprise
 
#29

Re: TWebBrowser < undefinierter Bezeichner

  Alt 14. Aug 2004, 13:10
so hab mal bissel dran gebastelt.
schau dir das an und probier es ein bissel aus.
sollte dann für dich klappen:

Code:
unit Unit2;

interface

uses
   SysUtils, Classes, Controls, Forms, Dialogs, OleCtrls, SHDocVw, ActiveX;

type
  myThread = class(TThread)
  private
    { Private-Deklarationen }
  protected
    procedure Execute; override;
    procedure Submit(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
    procedure UpdateCaption;
  public
    app : TApplication;
  end;

implementation

uses Unit1;

{ Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen
  nur in einer Methode namens Synchronize aufgerufen werden, z.B.

      Synchronize(UpdateCaption);

  und UpdateCaption könnte folgendermaßen aussehen:

    procedure myThread.UpdateCaption;
    begin
      Form1.Caption := 'Aktualisiert in einem Thread';
    end; }

{ myThread }

procedure myThread.Execute;
var wb : TWebBrowser;
begin
  OleInitialize(nil);
  wb := TWebBrowser.Create(Form1);
  try
    TWinControl(wb).Name := 'MyWebBrowser';
    TWinControl(wb).Parent := Form1;
    wb.OnDocumentComplete := self.Submit;
    wb.Align := alClient;
    wb.Navigate('http://www.google.com');

    while wb.ReadyState <> READYSTATE_COMPLETE do
      app.ProcessMessages;

    Synchronize(UpdateCaption);

  except
     FreeAndNil(wb);
     OleUninitialize;
  end;
end;

procedure myThread.UpdateCaption;
begin
      Form1.Caption := 'Aktualisiert in einem Thread';
end;

procedure myThread.Submit(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  showmessage('test');
end;

end.

HauptUnit

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var myTestThread : myThread;
begin
       myTestThread := myThread.Create(True);
       WITH myTestThread DO
       BEGIN
          myTestThread.app := Application;
          FreeOnTerminate := True;
          Resume;
       END;
END;

end.


mfg emploi
  Mit Zitat antworten Zitat