以前からPluggableTextMorphの扱い方を
この場で皆さんに教えて頂き、 KJ法みたいなものを実現したいと頑張っている者です。 お陰様でだいぶん理解が進み、 カードを作り、内容を書き込み・書き換え、 それをある場所に格納するところまではきました。 そこで次に、カードをmouseでつまんで移動する仕方が 判らないのです。 つまり、 PluggableTextMorph on: self text: #text accept: #text: readSelection: nil menu: nil は動くのですが、ここに handlesMouseDown:やmouseDown:を 作用させるにはどうすればよいのでしょうか。 上のon:selfの「selfを自分のクラスのinstanceで 置き換えるのかとも思うのですが、 よく判っていません。 そもそもon:はどういう機能を持つのでしょうか。 どうか宜しくお願い致します。 久保 道 |
久保さん、ごきげんよう。鷲見です。
on: のところに挿入する引数は、このカード(a PluggableTextMorph)に 入力された内容を別のオブジェクト(モデルと呼ぶ)で管理しているときに それを当てはめます。たとえば、 | model field | model := ProcessBrowser new. model openAsMorph. field := PluggableTextMorph on: model text: #selectedMethod accept: nil readSelection: nil menu: nil. field center: Point fromUser. field openInWorld. というスクリプトを評価して、クリックして指定した場所に a Pluggable- TextMorph を設置してから、同時に開くプロセスブラウザの右手のリスト から適当な項目を選んだときに起こることを観察してみてください。 この仕組みはカードを動かす目的とは直接関係ないので、たとえば、 alt/cmd + ドラッグでの移動を使う…というのではダメでしょうか。 あるいは、カードを a PluggableTextMorph だけではなく、a Rectangle- Morph のようなクリックしてピックアップできるタイプのモーフのサブ モーフとして a PlugableTextMorph を組み合わせた、複合モーフのクラスとして 新しく定義する…という方法もあるかもしれません。 06/07/12 に kubo-o<[hidden email]> さんは書きました: > handlesMouseDown:やmouseDown:を > 作用させるにはどうすればよいのでしょうか。 > 上のon:selfの「selfを自分のクラスのinstanceで > 置き換えるのかとも思うのですが、 > よく判っていません。 > そもそもon:はどういう機能を持つのでしょうか。 > どうか宜しくお願い致します。 > 久保 道 -- Masato Sumi |
鷲見さん、早速ありがとうございました。
on:のはたらきについてはよく判りました。 もう一つの方のことですが、a Rectangle-Morph のようなクリックしてピックアップ できるタイプのモーフでないと、PluggableTextMorphは直接にはmouseでつかめない のでしょうか。 はじめにworld上でopenInHnadをやるときだけはつかめていますが。 on:などの引数付きのPluggableTextMorphに、なにか他の引数を追加すれば、 eventhandlingが使えるのでしょうか。 久保 道 -----Original Message----- From: [hidden email] [mailto:[hidden email]]On Behalf Of Masato Sumi Sent: Wednesday, July 12, 2006 5:20 PM To: Squeak discussion in Japanese Subject: [Squeak-ja: 3044] Re: PluggableTextMorphをつまむ方法 久保さん、ごきげんよう。鷲見です。 on: のところに挿入する引数は、このカード(a PluggableTextMorph)に 入力された内容を別のオブジェクト(モデルと呼ぶ)で管理しているときに それを当てはめます。たとえば、 | model field | model := ProcessBrowser new. model openAsMorph. field := PluggableTextMorph on: model text: #selectedMethod accept: nil readSelection: nil menu: nil. field center: Point fromUser. field openInWorld. というスクリプトを評価して、クリックして指定した場所に a Pluggable- TextMorph を設置してから、同時に開くプロセスブラウザの右手のリスト から適当な項目を選んだときに起こることを観察してみてください。 この仕組みはカードを動かす目的とは直接関係ないので、たとえば、 alt/cmd + ドラッグでの移動を使う…というのではダメでしょうか。 あるいは、カードを a PluggableTextMorph だけではなく、a Rectangle- Morph のようなクリックしてピックアップできるタイプのモーフのサブ モーフとして a PlugableTextMorph を組み合わせた、複合モーフのクラスとして 新しく定義する…という方法もあるかもしれません。 06/07/12 に kubo-o<[hidden email]> さんは書きました: > handlesMouseDown:やmouseDown:を > 作用させるにはどうすればよいのでしょうか。 > 上のon:selfの「selfを自分のクラスのinstanceで > 置き換えるのかとも思うのですが、 > よく判っていません。 > そもそもon:はどういう機能を持つのでしょうか。 > どうか宜しくお願い致します。 > 久保 道 -- Masato Sumi |
横川です。
ちょこっと補足。 鷲見さんのアイデアの実装例はこんな感じです。 カードの周りに余白を作って、そこをつまめるようにしました。 クラスは新しく定義してませんが、クラスを作ったときもレイアウトの方法は同 じものが使えます。 > あるいは、カードを a PluggableTextMorph だけではなく、a Rectangle- > Morph のようなクリックしてピックアップできるタイプのモーフのサブ > モーフとして a PlugableTextMorph を組み合わせた、複合モーフのクラスとして > 新しく定義する…という方法もあるかもしれません。 ---- | model field card | model := ProcessBrowser new. model openAsMorph. field := PluggableTextMorph on: model text: #selectedMethod accept: nil readSelection: nil menu: nil. field center: Point fromUser. card := BorderedMorph new. card layoutPolicy: ProportionalLayout new. card addMorph: field fullFrame: (LayoutFrame fractions: (0 @ 0 corner: 1.0 @ 1.0) offsets: (10 @ 10 corner: -10 @ -10)). card extent: 100@100. card color: Color white. card openInWorld. ---- On Wed, 12 Jul 2006 22:19:55 +0900 "kubo-o" <[hidden email]> wrote: > 鷲見さん、早速ありがとうございました。 > on:のはたらきについてはよく判りました。 > もう一つの方のことですが、a Rectangle-Morph のようなクリックしてピックアップ > できるタイプのモーフでないと、PluggableTextMorphは直接にはmouseでつかめない > のでしょうか。 > はじめにworld上でopenInHnadをやるときだけはつかめていますが。 > on:などの引数付きのPluggableTextMorphに、なにか他の引数を追加すれば、 > eventhandlingが使えるのでしょうか。 > 久保 道 > > -----Original Message----- > From: [hidden email] > [mailto:[hidden email]]On Behalf Of Masato Sumi > Sent: Wednesday, July 12, 2006 5:20 PM > To: Squeak discussion in Japanese > Subject: [Squeak-ja: 3044] Re: PluggableTextMorphをつまむ方法 > > > 久保さん、ごきげんよう。鷲見です。 > > on: のところに挿入する引数は、このカード(a PluggableTextMorph)に > 入力された内容を別のオブジェクト(モデルと呼ぶ)で管理しているときに > それを当てはめます。たとえば、 > > | model field | > model := ProcessBrowser new. > model openAsMorph. > > field := PluggableTextMorph > on: model > text: #selectedMethod > accept: nil > readSelection: nil > menu: nil. > field center: Point fromUser. > field openInWorld. > > というスクリプトを評価して、クリックして指定した場所に a Pluggable- > TextMorph を設置してから、同時に開くプロセスブラウザの右手のリスト > から適当な項目を選んだときに起こることを観察してみてください。 > > この仕組みはカードを動かす目的とは直接関係ないので、たとえば、 > alt/cmd + ドラッグでの移動を使う…というのではダメでしょうか。 > > あるいは、カードを a PluggableTextMorph だけではなく、a Rectangle- > Morph のようなクリックしてピックアップできるタイプのモーフのサブ > モーフとして a PlugableTextMorph を組み合わせた、複合モーフのクラスとして > 新しく定義する…という方法もあるかもしれません。 > > 06/07/12 に kubo-o<[hidden email]> さんは書きました: > > handlesMouseDown:やmouseDown:を > > 作用させるにはどうすればよいのでしょうか。 > > 上のon:selfの「selfを自分のクラスのinstanceで > > 置き換えるのかとも思うのですが、 > > よく判っていません。 > > そもそもon:はどういう機能を持つのでしょうか。 > > どうか宜しくお願い致します。 > > 久保 道 > > -- > Masato Sumi -- ! Koji Yokokawa <[hidden email]> http://yengawa.com/ ^self new! |
Free forum by Nabble | Edit this page |