2012-12-17 6 views
8

Come ottenere e impostare le posizioni della barra di scorrimento TChromium in Delphi?Come ottenere e impostare le posizioni della barra di scorrimento TChromium?

+9

Votato per la riapertura. Questa è, a mio avviso, una domanda valida e utile! Non c'è molto da ricercare (quindi non c'è molto da mostrare), dal momento che è probabilmente impossibile ottenere o impostare le posizioni della barra di scorrimento in CEF. – TLama

+0

Grazie per la risposta, proverò ad un'altra soluzione. –

risposta

1

Attualmente disputa con CefSharp, penso che questo è simile rispetto a Delphi. Ecco la mia soluzione:

public int GetVerticalScrollPosition() 
{ 
    var r = _webView.EvaluateScript(@"document.body.scrollTop"); 
    return Convert.ToInt32(r); 
} 

public void SetVerticalScrollPosition(int pos) 
{ 
    _webView.ExecuteScript(
     string.Format(@"document.body.scrollTop = {0}", pos)); 
} 

Non sono più un esperto di Delphi, spero che tu possa capire il mio codice; fondamentalmente I use JavaScript to read/write the scroll positions ed esegui questi piccoli snippet JavaScript tramite i metodi EvaluateScript e ExecuteScript.

3

E 'possibile lavorare con oggetti JavaScript direttamente. Basta usare CefV8Context del frame.

Ecco un esempio:

var 
    val: ICefV8Value; 
    context: ICefv8Context; 
    excp: ICefV8Exception; 
    scroll: TPoint; 
begin 
    if (Chromium1.Browser.MainFrame = nil) then 
     exit; 

    //this will work only with exact frame 
    context := Chromium1.Browser.MainFrame.GetV8Context; 

    if (context <> nil) then 
    begin 
     context.Eval('window.pageXOffset', val, excp); 
     scroll.x := val.GetIntValue; 
     context.Eval('window.pageYOffset', val, excp); 
     scroll.y := val.GetIntValue; 
    end 
    else 
     exit; 

    //todo: do something with scroll here 
end; 
0

È necessario utilizzare JavaScript TCromium.Browser. Questo è il modo più semplice:

Chromium1.Browser.MainFrame.ExecuteJavaScript('window.scrollBy(0,50)', 'about:blank', 0); 

Buona fortuna!

Problemi correlati