2012-12-17 25 views
8

डेल्फी में TChromium स्क्रॉलबार स्थिति कैसे प्राप्त करें और सेट करें?टीच्रोमियम स्क्रॉलबार पदों को कैसे प्राप्त करें और सेट करें?

+9

फिर से खोलने के लिए वोट दिया गया। यह मेरे विचार में एक वैध और उपयोगी सवाल है! शोध करने के लिए बहुत कुछ नहीं है (इसलिए भी दिखाने के लिए बहुत कुछ नहीं), क्योंकि सीईएफ में स्क्रॉलबार पदों को प्राप्त करना या सेट करना संभवतः संभव है। – TLama

+0

उत्तर के लिए धन्यवाद, मैं एक और समाधान की कोशिश करूंगा। –

उत्तर

1

वर्तमान में CefSharp के साथ खेल रहा है, मुझे लगता है कि यह डेल्फी के समान है। यहां मेरा समाधान है:

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

मैं अब डेल्फी विशेषज्ञ नहीं हूं, उम्मीद है कि आप मेरे कोड को समझ सकते हैं; मूल रूप से I use JavaScript to read/write the scroll positions और इन छोटे जावास्क्रिप्ट स्निपेट को EvaluateScript और ExecuteScript विधियों के माध्यम से निष्पादित करें।

3

जावास्क्रिप्ट ऑब्जेक्ट्स के साथ सीधे काम करना संभव है। बस फ्रेम के CefV8Context का उपयोग करें।

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

आप TCromium.Browser में जावास्क्रिप्ट का उपयोग करने की आवश्यकता है:

यहां एक नमूना है। यह सबसे आसान तरीका है:

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

शुभकामनाएं!