Thema: Delphi Scrollen im TWebBrowser

Einzelnen Beitrag anzeigen

Ungeübter

Registriert seit: 29. Mai 2004
16 Beiträge
 
#1

Scrollen im TWebBrowser

  Alt 29. Mai 2004, 19:30
Hallo liebe Programmiergemeinde,

mich plagt zur Zeit ein Problem, bei welchem ich bisher keine vernünftige Lösung finden konnte. Allerdings programmiere ich auch noch nicht lange

Ich brauche eine Anweisung, mit der ich bei einem Dokument, welches in der WebBrowser-Komponente geladen ist, ganz nach unten scrollen kann. Nun habe ich dieses Beispiel gefunden (http://www.swissdelphicenter.ch/de/showcode.php?id=1186):

Code:
function WB_ScrollTo(WB: TWebBrowser; Position: TWBPosition): Boolean;
var
  ParentW: OLEVariant;
begin
  Result := WB.Document <> nil;
  if Result then
  begin
    ParentW := WB.OleObject.Document.ParentWindow;
    case Position of
      wbPosBottom: ParentW.ScrollTo(0, ParentW.Screen.Height);
      wbPosTop: ParentW.ScrollTo(0, 0);
      wbPosRight: ParentW.ScrollTo(ParentW.Screen.Width, 0);
    end;
  end;
end;

// Example: Scroll to the bottom of the document:
procedure TForm1.Button1Click(Sender: TObject);
begin
  WB_ScrollTo(WebBrowser1, wbPosBottom);
end;
Als ich dies nun probieren wollte, meckerte der Compiler bei dem Variablentyp "TWBPosition", weshalb ich diesen Typ durch Byte ersetzt und die function entsprechend geändert habe.

Nur funktioniert diese function zwar oftmals, aber leider nicht immer Manchmal scrollt der WebBrowser nur ein kurzes Stück des Dokumentes.

Auf der Suche nach Alternativen bin ich dann auf diese Anweisung gestoßen (http://www.delphipages.com/threads/t...14257&G=114227):

Code:
procedure TForm1.sbScrollToBottomClick(Sender: TObject);
var
 scrollpos: Integer;
 pw : IHTMLWindow2;
 Doc: IHTMLDocument2;
 script: WideString;
begin
 Doc := WebBrowser1.Document as IHTMLDocument2;
 pw := IHTMLWindow2(Doc.parentWindow);
 scrollPos := pw.screen.height;
 pw.scrollBy(0, scrollpos);
end;
Diese Anweisung testweise in eine ButtonClick-Procedure implementiert ergab wiederrum Compilerfehler bei "IHTMLWindow2" und "IHTMLDocument2" – beide Begriffe werden nicht erkannt.

An dieser Stelle bin ich mit meinem Latein am Ende, vielleicht wißt ihr ja einen Rat ?
  Mit Zitat antworten Zitat