From: "山崎雄介" Date: 2007-05-22T14:25:17+09:00 Subject: [ruby-list:43554] Ruby/Tk:ドラッグによる範囲選択 山崎(ゆ)です。 Ruby/Tkのウィジェットを並べて表を作っています。 Excelのようなマウスのドラッグによる範囲選択を実現したいのですが、 バインドでつまづいています。 それで下の簡単なプログラムで実験してみました。 #---------------------------------------------------------- # TkEntryを2つ並べて、クリック&ドラッグ時の応答を調べる #---------------------------------------------------------- require 'tk' TkOptionDB.add('*Font', 'Arial 20') w1 = TkEntry.new w2 = TkEntry.new TkPack(w1, w2, :side=>:left, :expand=>:yes, :fill=>:both) w1.bind('Enter', proc{puts 'w1 Enter'}) w2.bind('Enter', proc{puts 'w2 Enter'}) #w1.bind('Leave', proc{puts 'w1 Leave'; w1.grab(:release)}) #w2.bind('Leave', proc{puts 'w2 Leave'; w2.grab(:release)}) Tk.mainloop #---------------------------------------------------------- w1を左クリック(ButtonPress-1)してからw2へポインタを運んだときの応答とし ては、 w1 Enter w2 Enter というのを期待していたんですが、実際には w1 Enter のみで、w2は応答していないことが原因と分かりました。 いろいろ調べるとTkEntryに限らずウィジェットがButtonPressされると ButtonReleaseされるまでポインタを自分にgrabするようです。 これを解除しようとコメントアウトした部分を入れてみましたが、grabを解除す ることはできませんでした。 なにかうまい方法はないでしょうか? _______________________ Yusuke Yamasaki