2

以下のコードには (少なくとも) 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スクロールバーが必要な場合にのみ表示されるように、高さをコンテンツに正確に合わせます。

4

1 に答える 1

1

まず、簡単な方法です。[コピー]ボタンの行をに変更しますapp.clipboard = @sql.text

次に、スクロールバーに関する限り、これはWindowsXPの既知の問題です。githubのバグレポートにリストされていませんが、最新バージョン(r1229)にはまだスクロールバーがありません。

于 2009-04-28T19:00:33.220 に答える