[#43494] ブロックとともに呼び出されたsortについて — "Toshiyuki Ogura" <oguradio@...>

小倉です。

12 messages 2007/05/15

[#43508] rubyのテキストについて — 桑江 康公 <ykuwae@...>

はじめまして、桑江といいます。プログラム開発の勉強をはじめたいと考えています。いろいろと調べたのですが、オブジェクト指向を使った開発が現在しりゅうとのことで、Javaを勉強しようと考えていたのですが、rubyという言語もあるということがわかりネットで調べたところこのメーリングリストにたどり着きました。どなたかプログラム開発初心者でもわかりやすい本またはサイトがありましたら教えていただけないでしょうか?ちなみに、私のレベルはHTMLが少しわかる程度です。

8 messages 2007/05/15

[ruby-list:43557] Re: Ruby/Tk:ドラッグによる範囲選択

From: Hidetoshi NAGAI <nagai@...>
Date: 2007-05-22 15:54:56 UTC
List: ruby-list #43557
永井@知能.九工大です.

From: 山崎雄介 <y-yamasaki@saeilo.co.jp>
Subject: [ruby-list:43554] Ruby/Tk:ドラッグによる範囲選択
Date: Tue, 22 May 2007 14:25:17 +0900
Message-ID: <20070522132847.31F1.Y-YAMASAKI@saeilo.co.jp>
> Ruby/Tkのウィジェットを並べて表を作っています。
> Excelのようなマウスのドラッグによる範囲選択を実現したいのですが、
> バインドでつまづいています。

TkTable 拡張を利用すべきではないかという気もしますが,
標準の Tk の範囲で行うなら Grid ジオメトリマネージャの
location コマンドを用いると良さそうです.

起点 (drag 開始位置) の [colum, row] と
終点 (button release 位置の [colum, row] とがわかれば,
後は何とでもできますよね?

というわけで,次のような戦略ではいかがでしょう?
土台となる frame widget 上での座標を求め,
それにより [colum, row] を得ています.
------------------------------------------------------
require 'tk'

cols = 4
rows = 6

f = TkFrame.new.pack

btag = TkBindTag.new

mark_loc = [0,0]

btag.bind('1', '%W %x %y'){|w, x, y|
  # drag 範囲の起点
  mark_loc = f.grid_location(w.winfo_x + x, w.winfo_y + y)
}
btag.bind('B1-Motion', '%W %x %y'){|w, x, y|
  # drag 範囲の終点
  p [mark_loc, f.grid_location(w.winfo_x + x, w.winfo_y + y)]
}

ary = (0..(rows-1)).collect{|row|
         (0..(cols-1)).collect{|col|
            TkEntry.new(f){|w| w.bindtags_unshift(btag)}
         }
      }

ary.each{|row| Tk.grid(*row)}

Tk.mainloop
------------------------------------------------------
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread