下面的代码(至少)有两个问题: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
,则不会出现任何滚动条。
对这两个问题的任何帮助将不胜感激。如果有帮助,我的环境是Windows XP。
更新答案:感谢@Pesto回答剪贴板问题。事实证明,clipboard
或app.
符合条件的self.
符合Paste
和Copy
按钮的预期效果。
在深入研究滚动条问题之后,我想我明白为什么edit_box
没有显示滚动条。 Shoes中的滚动条仅适用于广告位(stack
和flow
),而不适用于edit_box
等单个元素。 edit_box
高度的指定方式始终适合封闭的stack
,因此stack
永远不需要滚动条。这导致我的解决方案并不理想,但我的应用程序可以接受。只需将edit_box
高度更改为大于必要值(例如"10000px"
),系统就会显示滚动条。不幸的是,它是否需要,但这比没有滚动条更好。我确信一些额外的修补可以动态地改变edit_box
高度以完全适合内容,这样滚动条只会在需要时出现。
答案 0 :(得分:1)
首先,简单的方法是:将“复制”按钮中的行更改为app.clipboard = @sql.text
。
其次,就滚动条而言,这是Windows XP上的known issue。我没有在github上的bug报告中看到它,但是最新版本(r1229)仍然没有滚动条。