2

Shoes は非常に便利な GUI ツールです。ユーザーが編集のために大きなテキストをナビゲートできるように、検索フォームを作成したいと思います。このためには、編集ボックス要素内でカーソルを移動する必要があります。

ここに私の質問がコードで表示されます:

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

エディットボックスのカーソル位置を変更する方法はありますか? そうでない場合、実装の代替方法を知っていますか?

4

1 に答える 1

0

残念ながら、Shoes はそれを行う方法を提供していないようです。これらは、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

于 2009-05-13T23:33:22.227 に答える