鞋子问题:剪贴板和滚动条

时间:2009-04-28 17:07:18

标签: scrollbar clipboard shoes

下面的代码(至少)有两个问题: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回答剪贴板问题。事实证明,clipboardapp.符合条件的self.符合PasteCopy按钮的预期效果。

在深入研究滚动条问题之后,我想我明白为什么edit_box没有显示滚动条。 Shoes中的滚动条仅适用于广告位(stackflow),而不适用于edit_box等单个元素。 edit_box高度的指定方式始终适合封闭的stack,因此stack永远不需要滚动条。这导致我的解决方案并不理想,但我的应用程序可以接受。只需将edit_box高度更改为大于必要值(例如"10000px"),系统就会显示滚动条。不幸的是,它是否需要,但这比没有滚动条更好。我确信一些额外的修补可以动态地改变edit_box高度以完全适合内容,这样滚动条只会在需要时出现。

1 个答案:

答案 0 :(得分:1)

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

其次,就滚动条而言,这是Windows XP上的known issue。我没有在github上的bug报告中看到它,但是最新版本(r1229)仍然没有滚动条。