下面的代码(至少)有两个问题: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
高度以完全适合内容,以便滚动条仅在需要时出现。