1
Shoes.app do
 keypress do |k|
    if k==:f1
      alert("Foo bar")
    end
  end
  button "foo"
end

F1 を押すと、警告ボックスがポップアップしますが。ボタン「foo」をクリックすると、フォーカスがアプリのネイティブコントロールに変更されます。キー押下イベントはキャプチャされなくなりました。それを回避する方法はありますか?

ウィンドウズXPを使用しています。

4

1 に答える 1

2

これは、執筆時点ではまだ Windows 上の Shoes のバグです。クリアしてすべてを再描画することで逃げることができれば、キープレスイベントを再び取得できます。次に例を示します。

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

このトリックは質問の例では機能しますが、実際のアプリにうまく変換できるかどうかはわかりません。

于 2010-01-18T11:35:21.383 に答える