2009-02-27 5 views
1
Shoes.app do 
keypress do |k| 
    if k==:f1 
     alert("Foo bar") 
    end 
    end 
    button "foo" 
end 

Appuyer sur F1 fait apparaître la boîte d'alerte mais. Une fois que je clique sur le bouton "foo", c'est-à-dire si le focus devient un contrôle natif dans l'application. les événements de pression de touche ne sont plus capturés. un moyen de le contourner?Pourquoi la touche n'est pas appelée après un clic sur les contrôles natifs?

J'utilise Windows XP.

Répondre

2

Il s'agit toujours d'un bug dans Shoes on Windows au moment de l'écriture. Si vous pouvez vous contenter de faire un tout clair et redessiner vous pouvez obtenir les événements de touche à nouveau, par exemple:

Shoes.app do 
    def drawbutton 
     @holder.clear do 
      button "foo" do 
       drawbutton 
      end 
     end 
    end 

    @holder = stack 

    drawbutton 

    keypress do |k| 
     if k==:f1 
      alert("Foo bar") 
     end 
    end 
end 

Bien que cette astuce fonctionne pour l'exemple dans votre question, je ne suis pas sûr qu'il se traduirait bien à une vraie application.

Questions connexes