2009-01-21 5 views
2

Chaussures est un outil graphique très pratique. Je voudrais faire un formulaire de recherche afin qu'un utilisateur soit aidé à naviguer à travers des textes plus volumineux pour l'édition. Pour cela, j'ai besoin de déplacer le curseur dans un élément editbox.Comment positionner le curseur d'editbox dans des chaussures?

Ici, vous verrez ma question dans le code:

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 

est-il est un moyen de changer la position du curseur d'un editbox? Si non, connaissez-vous une autre méthode de mise en œuvre?

+0

atomota, bienvenue à Stackoverflow! –

Répondre

1

Malheureusement, Chaussures ne semble pas fournir un moyen de le faire. Ce sont les seules méthodes définies sur EditBox (elle hérite de Native, qui a plusieurs méthodes, mais encore une fois, aucune pour repositionner le curseur).

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