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. 如果您进行更改,然后单击Copyalert消息将显示正确的字符数。如果您随后Paste再次单击,则会粘贴原始剪贴板内容。该Copy按钮永远不会正确更新剪贴板。

此外,如果通过编辑或粘贴生成的行数超过了edit_box,则不会出现滚动条。

对于这两个问题的任何帮助将不胜感激。如果有帮助,我的环境是 Windows XP。

更新答案:感谢@Pesto 回答剪贴板问题。事实证明,在和按钮中clipboard使用其中一个app.self.按预期工作。PasteCopy

在深入研究滚动条问题后,我想我明白为什么edit_box不显示滚动条了。Shoes 中的滚动条仅适用于插槽(stackflow),而不适用于单个元素,例如edit_box. edit_box高度以始终适合封闭的方式指定,stack因此stack永远不需要滚动条。这导致我找到了一个不理想的解决方法,但我的应用程序可以接受。只需将edit_box高度更改为大于必要的值,例如"10000px"滚动条就会出现。不幸的是,无论是否需要,它都在那里,但这总比没有滚动条好。我敢肯定,一些额外的修补可以动态改变edit_box高度以完全适合内容,以便滚动条仅在需要时出现。

4

1 回答 1

1

首先,最简单的方法是:将 Copy 按钮中的行更改为app.clipboard = @sql.text

其次,就滚动条而言,这是 Windows XP 上的一个已知问题。我没有在 github 上的错误报告中看到它,但最新版本(r1229)仍然没有滚动条。

于 2009-04-28T19:00:33.220 回答