以下のコードには (少なくとも) 2 つの問題があります。Copyボタンがクリップボードを更新しedit_boxないことと、垂直スクロール バーが表示されるべきときに表示されないことです。
Shoes.app (:title => "Test", :width => 1000, :height => 600) do
background "#DFA"
stack :margin => 30 do
flow do
button "Paste" do
@sql.text = clipboard
end
button "Copy", :margin_left => 15 do
clipboard = @sql.text
alert(@sql.text.length.to_s + " characters copied to clipboard.")
end
end
stack :margin_top => 10, :width => "100%", :height => 500, :scroll => true do
@sql = edit_box :width => "100%", :height => "100%"
end
end
end
ボタンはPaste、クリップボードの内容を に正しく貼り付けますedit_box。変更を行って をクリックするCopyと、alertメッセージに正しい文字数が表示されます。もう一度クリックPasteすると、元のクリップボードの内容が貼り付けられます。ボタンはCopyクリップボードを正しく更新しません。
また、編集または貼り付けによって に収まらない行を生成するとedit_box、スクロール バーが表示されなくなります。
これら 2 つの問題に関するヘルプをいただければ幸いです。それが役立つ場合、私の環境はWindows XPです。
回答付きの更新:クリップボードの質問に回答してくれた @Pesto に感謝します。clipboardor のいずれかを使用app.した修飾は、 ボタンとボタンself.の両方で期待どおりに機能することがわかりました。PasteCopy
edit_boxスクロールバーの問題を深く掘り下げた後、スクロールバーが表示されない理由が理解できたと思います。stackShoes のスクロールバーはスロット (と) にのみ適用されflow、 のような個々の要素には適用されませんedit_box。高さは、囲んでいるedit_box内に常に収まるように指定されるため、はスクロールバーを必要としません。これにより、理想的ではありませんが、私のアプリケーションでは許容できる回避策が得られました。高さを必要以上の値に変更するだけで、スクロールバーが表示されます。残念ながら、必要かどうかにかかわらずそこにありますが、スクロールバーがないよりはましです。追加のいじくり回しで動的に変更できると確信していますstackstackedit_box"10000px"edit_boxスクロールバーが必要な場合にのみ表示されるように、高さをコンテンツに正確に合わせます。