Thema: Delphi Browser programmieren

Einzelnen Beitrag anzeigen

djpaull
(Gast)

n/a Beiträge
 
#28

Re: Browser programmieren

  Alt 18. Apr 2008, 01:36
Moin, Moin!

Aaaalso... Hab ein Browser mit Tabing-Funktion. Momentan hab ich folgende Probleme:
1. Meine StatusBar reagiert nicht mehr und
2. Adressen Feld zeigt die Adresse erst an, wenn man auf "Aktualisieren" clickt (, also erst nachdem die Seite komplett geladen worden ist). Geht komischer weise bei allen Tabs

Code

"wbb: TWebBrowser" und "stb: TStatusBar" sind global deklariert

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
ts: TTabSheet;

  begin
    stb:= TStatusBar.Create(Form1); // StatusBar wird vom Programm erstellt
    form1.InsertControl(stb);

    wbb:= twebbrowser.Create(form1); // Browser wird vom Programm erstellt
    wbb.GoHome;

    ts := TTabsheet.Create(PageControl2);
    ts.Caption := wbb.LocationName; // Funzt nicht
    ts.PageControl := PageControl2;
    PageControl2.ActivePage := ts;
    wbb := TWebBrowser.Create(ts);
    ts.InsertControl(wbb);
    wbb.Align := alClient;
    wbb:=GetCurrentWB;
    wbb.GoHome;
    wbb.OnNewWindow2 := wbbNewWindow2;

...

procedure TForm1.wbbNavigateComplete2(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
Begin
  wbb:=GetCurrentWB; // Aktiven Browser ermitteln
  edtAdresse.Text:=wbb.LocationURL;

...

procedure TForm1.btnNewTabClick(Sender: TObject); // Neuen Tab öffnen
  var
  ts1: TTabsheet;
begin
  ts1 := TTabsheet.Create(PageControl2);

  ts1.PageControl := PageControl2;
  PageControl2.ActivePage := ts1;
  wbb := TWebBrowser.Create(ts1);
  ts1.InsertControl(wbb);
  wbb.Align := alClient;
  wbb:=GetCurrentWB;
  wbb.GoHome;
  edtAdresse.Text:=wbb.LocationURL;
  ts1.Caption := wbb.LocationName; // Funzt nicht
  pagecontrol2.ActivePage:=(ts1);
  wbb.OnNewWindow2 := wbbNewWindow2;
end;

...

// Make TStatusbar to be the parent of any controls - Funzt nicht bei mehreren Tabs !!!

constructor TStatusBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls];
end;

...

procedure TForm1.wbbProgressChange(ASender: TObject; Progress,
  ProgressMax: Integer);
  begin

  if progressmax>0 then
    stb.Panels[0].Text:=inttostr(round(Progress/progressmax*100));
  end;


procedure TForm1.wbbStatusTextChange(ASender: TObject; const Text: WideString);
begin

  stb.Panels[1].Text:=Text;
end;
Als der Browser und StatusBarnoch von mir erstellt wurden, also in der Tool Palette, ging NUR der erste Tab mit wbb drin, auf weitere Tabs gabs keine Reaktion weder im Adressen Feld, noch in der StatusBar. Hat Jemand eine Idee was da falsch ist?

EDIT

Delphi-Quellcode:
// Aktiven Browser ermitteln ---------------------------------------------

function Tform1.GetCurrentWB: TWebbrowser;
begin
  Result := nil;
  with PageControl2 do
    if ActivePage.ControlCount > 0 then
    begin
      if ActivePage.Controls[0] is TWebbrowser then
      begin
        Result := (TWebbrowser(ActivePage.Controls[0]));
      end else
        Result := wbb;

    end;
end;
EDIT 2

Also meine Theorie: Bei den vom Programm erstellten Objekten gibt es keine Ereignisse, wie OnNavigateComlplelte2. Zumindest Keine Reaktion.

EDIT 3
Kleines Beispiel was ich meine zum Downloaden.
Angehängte Dateien
Dateityp: zip test1_131.zip (244,6 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat