View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide

funfunfun27

PREV ------ ● TOP ● ------ NEXTUploaded Image: fmrph.jpg


プロジェクトの移動ボタンだよん

お次はプロジェクトにジャンプするボタンに挑戦してみるです。
これを使うとプロジェクトウィンドウをクリックするンじゃなくてボタンでプロジェクトを移動するってのができるね。

■クラスを作る

SimpleButtonMorphを親にしまして新しくクラスを定義いたします。
--------------------------------------------
SimpleButtonMorph subclass: #TestMorph19
	instanceVariableNames: ' '
	classVariableNames: ''
	poolDictionaries: ''
	category: 'MyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image9.jpg



■メソッドを追加ですな

初期設定です。
「target:」は「Project named: 'プロジェクトファイル名'」
「actionSelector:」は「#enter」ですな。

--------------------------------------------
initialize
	super initialize.
	self label: ' LINK '.
	self color: Color orange.
	self borderColor: #raised.

	self target: (Project named: 'TestProject').
	self actionSelector: #enter.
	self actWhen: #buttonUp.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image10.jpg



■テストして見る

テストしてみる前にジャンプ先の新規プロジェクトを作っておきまする。

Uploaded Image: image11.jpg


プロジェクトに「TestProject」と名前を付けるです。

Uploaded Image: image12.jpg


さてと、さっき作ったボタンのインスタンスをだしてみましょう。
下記のコードを書いてドゥーイット。

--------------------------------------------
TestMorph17 new openInWorld
--------------------------------------------
Alt + d ( Cmd + d )

Uploaded Image: image13.jpg


出てきたボタンをクリックすると・・・・おお!!ちゃんとジャンプするじゃん。

Uploaded Image: image14.jpg



■リンクボタンを作ってみるです。

さっき作ったのはリンク先が固定されてるんだけど、
今度はリンク先を赤ハロメニューで変更できるようにしてみましょう!!

クラス定義でプロジェクト名を入れるインスタンス変数を追加
--------------------------------------------
SimpleButtonMorph subclass: #TestMorph19
	instanceVariableNames: 'projectName '
	classVariableNames: ''
	poolDictionaries: ''
	category: 'MyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image15.jpg


初期設定の修正
「target」を変更。
--------------------------------------------
initialize
	super initialize.
	self label: ' LINK '.
	self color: Color orange.
	self borderColor: #raised.

	self target: (Project named: nil).
	self actionSelector: #enter.
	self actWhen: #buttonUp.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image16.jpg


この状態でインスタンスをだしてクリックしてみても何も起こらない。これあたりまえ。
--------------------------------------------
TestMorph17 new openInWorld
--------------------------------------------
Alt + d ( Cmd + d )

Uploaded Image: image17.jpg



■メソッド追加

プロジェクトを選択するメニューを出す「selectProject」というメソッドを追加しましょう。
このメソッドが呼び出されると現在のイメージの全プロジェクトが
リストアップされたカスタムメニューが出ます。
その中の1つを選ぶと「ProjectName」というインスタンスメソッドに代入されます。
--------------------------------------------
selectProject
	| m |
	m _ CustomMenu new.
	Project allNames do:[ : name |
			m add: name action: name].
	projectName _ m startUp.

	self target: (Project named: projectName).
	self label: projectName.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image18.jpg


赤ハロメニューに「リンク先を選んでね」という項目を追加します。
これを選ぶとさっき追加した「selectProject」というメソッドを呼び出します。<「action:」に設定。
--------------------------------------------
addCustomMenuItems: aCustomMenu hand: aHandMorph
	super addCustomMenuItems: aCustomMenu hand: aHandMorph.
	aCustomMenu add: 'リンク先を選んでね' action: #selectProject.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image19.jpg



■試してみよ〜!!

ではさっそくためしてみましょう。赤ハロメニューを出すと一番下にあるある新しい項目!!

Uploaded Image: image20.jpg


プロジェクトがリストアップされたサブのメニューが出てきます。
ここでジャンプ先を選びます。さっき作ったテスト用のプロジェクトをクリック。

Uploaded Image: image22.jpg


ジャ〜ンプ!!何もない画面が表示されたです。だいせ〜こう!!

Uploaded Image: image23.jpg

--------------------------------------------
前のプロジェクトに戻る

target: Project.
actionSelector: #returnToPreviousProject.

スクイークを終了する
target: Smalltalk;
actionSelector: #snapshot:andQuit:;
arguments: (Array with: false with: true))
--------------------------------------------



PREV ------ ● TOP ● ------ NEXT







■ MEMO ■


Monday, 1 March 2004, 12:38:31 am
ざっと見たところボタンモーフはこんなのがありますな。--thoru
SimpleButtonMorph
PluggableButtonMorph
StringButtonMorph
ThreePhaseButtonMorph
IconicButtonMorph
SimpleBUttonDelayMenuMorph






Links to this Page