2012-12-17 17 views
8

Delphi'de TChromium kaydırma çubuğu konumları nasıl ayarlanır ve ayarlanır?TChromium kaydırma çubuğu konumları nasıl alınır ve ayarlanır?

+9

Yeniden açılmak için oy verildi. Bu benim görüşüme göre geçerli ve yararlı bir soru! CEF'de kaydırma çubuğu pozisyonlarını almak ya da ayarlamak imkansız olduğu için, araştırma yapmak için fazla bir şey yok. – TLama

+0

Cevabınız için teşekkür ederim, başka bir çözüm bulmaya çalışacağım. –

cevap

1

Şu anda CefSharp ile oynuyor, bunun Delphi'den daha benzer olduğunu düşünüyorum. İşte benim çözüm:

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)); 
} 

Ben Delphi uzman artık, sen benim kodunu anlayabileceği umut değilim; Temel olarak I use JavaScript to read/write the scroll positions ve bu küçük JavaScript parçacıklarını EvaluateScript ve ExecuteScript yöntemleriyle yürütün.

3

Doğrudan javascript nesneleriyle çalışmak mümkündür. Sadece çerçevenin CefV8Context kullanın.

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

Sen TCromium.Browser JavaScript kullanmak gerekir: Burada

bir örnektir. Bu en kolay yol:

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

İyi şanslar!

İlgili konular