2009-01-21 52 views
2

鞋子是非常方便的GUI工具。我想做一個搜索表單,以便幫助用戶瀏覽更大的文本進行編輯。爲此,我需要將光標移動到一個editbox元素中。如何將編輯框的光標定位在鞋上?

在這裏,你會看到代碼我的問題:

Shoes.app do 

    stack do 
    p=para "After pressing 'search' a question will arise" 
    box=edit_box 
    box.text="One\nof\nthe\nmost\nstriking\ndifferences\nbetween\na\ncat\nand\na\nlie\nis\nthat\na\ncat\nhas\nonly\nnine lives." 
    flow :margin_top=>0.1 do 
     search=edit_line 

     button("search") do 
     pos=box.text.index search.text 
     y = box.text[0..pos].split.size-1 if pos 

     if not y.nil? 
      #For example if you searched "only" then 
      #cursor should jump/scroll to line 17. 
      # 
      #Anything there for cursor positioning, 
      #like: box.cursor=[0,y] 
      # 
      p.text="How can I move editbox's cursor in line #{y+1}?" 
     else 
      alert "'#{search.text}' not found" 
     end   
     end 
    end 
    end 
end 

有沒有什麼辦法可以改變編輯框的光標位置?如果沒有,你是否知道另一種實施方式?

+0

atomota,歡迎計算器! – 2009-01-24 17:27:37

回答

1

不幸的是,鞋子似乎沒有提供任何方式來做到這一點。這些是在EditBox上定義的唯一方法(它從Native繼承,它有幾個方法,但同樣沒有重新定位光標)。

rb_define_method(cEditBox, "text", CASTHOOK(shoes_edit_box_get_text), 0); 
rb_define_method(cEditBox, "text=", CASTHOOK(shoes_edit_box_set_text), 1); 
rb_define_method(cEditBox, "draw", CASTHOOK(shoes_edit_box_draw), 2); 
rb_define_method(cEditBox, "change", CASTHOOK(shoes_control_change), -1); 

http://github.com/why/shoes/blob/cea39a8bf9a5b7057b1824a9fab868d1f8609d69/shoes/ruby.c

相關問題