2009-08-10 5 views
3

靴では、まず隠されているボタンを作成したいと思います。私は、ボタンスタイルの一環としてhidden:> trueを渡してみたのですが、作成した後に@ button.hide()を呼び出すようにしましたが、それは頑丈なままです。靴に隠しボタンを作成するにはどうしたらいいですか?

私はそれが示されたいまで、ボタンを作成しないことにより、この問題を回避することができましたが、それは、それがすでに存在する場合は、むしろそれを使用するよりも、見にチェックが必要です。

答えて

3

現在はありません。シューズ、特にWindowsでは、ボタンの信頼性はまだかなり低いです。あなたは、スロットにボタンを入れて隠しまたはスロットを示すことによって、問題を回避することができますが、それが一度クリックされた後、再度ボタンを非表示にしないだろうことを発見することがあります。

Shoes.app do 
    para 'This is some text.' 

    @flow = flow :width => 50, :hidden => true do 
    button 'a' do |btn| 
     alert 'Hello, World!' 
    end 
    end 

    button 'toggle' do 
    @flow.toggle 
    end 
    para 'Blah blah blah' 

end 

を幸いにもがあり、出口:スロット。スロットにはクリックイベントが与えられ、ボタンのように動作します。実際には、スロットからかなりまともなボタンを作ることができます。

ここに私が一緒に手錠をかけたものがあります。フローで作成されたボタンを生成するにはpesto_buttonメソッドを使用できます。背景としてイメージを使用したり、変更可能なテキスト(自動拡張幅?)、オンザフライでスタイルを変更する機能など、ニーズに合わせて変更することができます。

class PestoButton < Widget 
    def initialize (text, opts = {}) 
    @border_color = opts[:border_color] || gray 
    @border_width = opts[:border_width] || 3 
    @color = opts[:up_color] || gainsboro 
    @click_color = opts[:down_color] || @border_color 
    @width = opts[:width] || 80 
    @click = block_given? ? Proc.new { yield } : nil 
    @text = text 
    @visible = true 
    @flow = flow :width => @width do 
     background @color 
     border @border_color, :strokewidth => @border_width 
     para @text, :align => 'center' 
    end 

    @flow.click do 
     @flow.clear 
     @flow.append do 
     background @click_color 
     border @border_color, :strokewidth => @border_width 
     para @text, :align => 'center' 
     end 
    end 

    @flow.release do 
     @flow.clear 
     @flow.append do 
     background @color 
     border @border_color, :strokewidth => @border_width 
     para @text, :align => 'center' 
     @click.call if @click 
     end 
    end 
    end 

    def click 
    @click = block_given? ? Proc.new { yield } : nil 
    end 

    def show 
    @flow.show 
    end 

    def toggle 
    @flow.toggle 
    end 

    def hide 
    @flow.hide 
    end 
end 

Shoes.app do 
    para 'This is some text.' 
    @btn = pesto_button 'Click me!' do 
    alert 'Hello, World!' 
    end 

    button 'toggle' do 
    @btn.toggle 
    end 

    button 'new block' do 
    @btn.click do 
     alert 'Goodbye, World!' 
    end 
    end 

    button 'no block' do 
    @btn.click #Clears the click method 
    end 

    para 'Blah blah blah' 
end 
関連する問題