Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu Dokument-höhe im TWebBrowser (https://www.delphipraxis.net/123704-frage-zu-dokument-hoehe-im-twebbrowser.html)

Svenkan 6. Nov 2008 21:23


Frage zu Dokument-höhe im TWebBrowser
 
Hallo Leute!
Ich wollte eine HTML-Datei scrollen lassen und sobald das Ende erreicht ist, soll diese wieder von oben anfangen zu scrollen.

Folgende Testprozedur habe ich:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  WebBrowser1.OleObject.Document.ParentWindow.ScrollTo(0,browser_y);

  if NOT (browser_y+1>WebBrowser1.OleObject.Document.Body.ScrollHeight) then
    browser_y:=browser_y+1
  else if (browser_y=WebBrowser1.OleObject.Document.Body.ScrollHeight) then
    browser_y:=0
  else
    browser_y:=WebBrowser1.OleObject.Document.Body.ScrollHeight;

  Label3.Caption:=IntToStr(WebBrowser1.OleObject.Document.Body.ScrollHeight);
  Label4.Caption:=IntToStr(browser_y);

   Timer1.Interval:=50;
end;

Das Problem ist, dass die Scrollhöhe leider nicht das gewünschte Ergebnis liefert, da diese leider nicht das genaue Ende des Scrollens angibt. Ich möchte aber, sobald die Scrollbar das untere Ende erreicht hat, dass diese wieder direkt nach oben springen soll!
Hat dort jemand eine Idee?

toms 8. Nov 2008 07:03

Re: Frage zu Dokument-höhe im TWebBrowser
 
Hallo,

Ist schon etwas seltsam..

Workaround:

- Aktuelle Y-Position der Scrollbar ermitteln
- ScrollTo(..)
- Neue Y-Position der Scrollbar ermitteln

Falls Aktuelle <> Neue dann ganz nach oben scrollen.


Zum Ermitteln der Scrollbar-Positionen kannst du diese Funktion verwenden: WB_GetScrollPosition
(Mit evtl. Anpassung an deine Bedürfnisse)

toms 11. Nov 2008 18:56

Re: Frage zu Dokument-höhe im TWebBrowser
 
Hast du schon ein Lösung gefunden resp. funktioniert mein Vorschlag?

Svenkan 12. Nov 2008 20:36

Re: Frage zu Dokument-höhe im TWebBrowser
 
Hallo toms,

ich bin bis gerade noch nicht zum ruhigen Lesen gekommen, da ich momentan einigermaßen unter Stress stehe.
Wenn ich mir das so durchlese, dann finde ich das eher seltsam. Aktuelle <> Neue ist doch schon, nachdem ich nur einen runtergescrollt bin?
Nach oben gescrollt werden soll aber erst, nachdem ich GANZ UNTEN angekommen bin. ;)

himitsu 12. Nov 2008 20:46

Re: Frage zu Dokument-höhe im TWebBrowser
 
dann versuch's mal so :angel:
if Aktuelle = Neue then ScrollWiederHoch;

Svenkan 12. Nov 2008 21:38

Re: Frage zu Dokument-höhe im TWebBrowser
 
Ich verstehe nicht so ganz, was ihr mit aktuell und Neu wollt. Weil es wird mehr als einmal gescrollt (nämlich alle 50ms um 1px nach unten!). Es ist ja nunmal so, dass mir der max. Wert fehlt.

Namenloser 12. Nov 2008 22:10

Re: Frage zu Dokument-höhe im TWebBrowser
 
Die Idee ist, nicht zu prüfen, ob du die maximale Höhe erreicht hast, sondern ob das Scrolling nach unten überhaupt ausgeführt wurde - denn wenn du bereits unten bist, tut der Borwser ja nix mehr und die Position bleibt gleich.

Svenkan 12. Nov 2008 23:06

Re: Frage zu Dokument-höhe im TWebBrowser
 
Ja ok, nach 48h ohne Schlaf ist das Denken nicht mehr sehr einfach. :D
Aber nun funktionierts.^^ Dankeschön und gute Nacht^^

toms 13. Nov 2008 07:36

Re: Frage zu Dokument-höhe im TWebBrowser
 
Zitat:

Zitat von himitsu
dann versuch's mal so :angel:
if Aktuelle = Neue then ScrollWiederHoch;

Sorry, das hatte ich eigentlich auch gemeint nur getippt...
(Vielleicht war es aber auch Absicht?!? :roll: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz