桐の釣魚大全のトップ > 新 フォームアプリケーション入門 §2
トップページに戻る
鋭意校正中です。
念のためにブラウザでF5キーを押してリロードしてからお読みください。
新 フォームアプリケーション入門 §2 ― 桐のイベント処理の入門講座
―はじめに―
"フォームアプリケーション"とは2000年当時の著者(ONnoji)の造語です。
桐ver.8 以降の桐でフォーム(.wfm/.wfx)とイベント処理(.kev/.kex)を組み合わせてアプリケーションを作成する手法を
"フォームアプリケーション"と呼ぶことにします。
これに対して一括処理(.cmd/.cmx)でアプリケーションを作成する手法を"一括アプリケーション"と呼ぶことにします。
本編は"フォームアプリケーション"を理解していただくための入門編です。
旧入門編は2000年から2001年に「桐のイベント道場」で連載しましたが、ジオシティーズのサービス終了に伴い2019年3月に公開終了しました。
この度、桐10sを元に旧作をリニューアルした内容で「新 フォームアプリケーション入門 §2」をお届けいたします。 2021年7月 著者しるす
§2 三角形の面積を求めるパート2
これから作成する"三角形の面積を求める"フォームアプリケーションは実用的ではありませんが、フォームアプリケーションの基本が必ず習得できるはずです。
どうぞご自分の桐10sでお試しください。
〈ヒントとコツ〉
このコンテンツはフォームアプリケーションの独習書です。
学習する際には、単に一読するよりも実際に桐10sを操作してフォームを完成する事を強くお勧めします。
所要時間は約30分〜約1時間です。
慣れている人ならばもっと短時間でフォームを完成できます。
<ご注意ください>
すべての説明は、桐sでは[リボンを使用しない]で利用する場合に該当します。
前回の[§1 三角形の面積を求める]において、次の内容を学習しました。
目次
《複製の作り方1/3》 再定義中のフォームに新しい名前を付けて保存する
《複製の作り方2/3》 再定義中のイベント処理ファイルに新しい名前を付けて書き出す
《複製の作り方3/3》 フォームファイル(.wfx)とイベント処理ファイル(.kex)を関連付ける
テキストボックス内の文字を選択状態にする
テキストボックスの文字色を編集属性式で設定する
<付録>
オブジェクトのリスト
オブジェクト:コマンドボタンとテキストボックスの編集属性式
[名札 メイン]と[手続き]
―《複製の作り方1/3》 再定義中のフォームに新しい名前を付けて保存する―
1.[ファイル]メニュー → [開く]を選び、[開く]ダイアログで、§1で作成した "三角形の面積を求める.wfx" を開きます。
2.[表示]メニュー → [再定義]を選び "三角形の面積を求める.wfx" のフォームの再定義ウィンドウにします。
3.[ファイル]メニュー → [名前を付けて保存]を選び、
[名前を付けて保存]ダイアログの[ファイル名]で "三角形の面積を求めるパート2" と入力して[保存]ボタンを実行します。
4.フォームの再定義ウィンドウのタイトルバーに表示されるファイル名が "三角形の面積を求めるパート2" に変更されていることを確認してください。
〈ヒントとコツ〉
既存のフォームをファイルコピーしてフォームを作るよりも、
フォームの再定義ウィンドウで、[ファイル]メニュー → [名前を付けて保存]で新しいフォームを作る方が、
そのまま作業が続行できるので能率的であり、なおかつ簡単です。
―《複製の作り方2/3》 再定義中のイベント処理ファイルに新しい名前を付けて書き出す―
1.フォームの再定義ウィンドウをフォーカスしたまま、[書式]メニュー → [イベントの定義]を選びます。
2.[三角形の面積を求める.kex]ウィンドウが現れたことを確かめてください。
3.[ファイル]メニュー → [書き出し] → [一括]を選び、[書き出し:一括・イベント処理ファイル]ダイアログを表示します。
4.[書き出し:一括・イベント処理ファイル]ダイアログの[ファイルの種類]の[∨]で "イベント処理" を選びます。
5.[書き出し:一括・イベント処理ファイル]ダイアログの[ファイル名]で "三角形の面積を求めるパート2" と入力して[開く]ボタンを実行します。
〈ヒントとコツ〉
イベント処理ファイルを書き出す先のファイル名(.kex)は、新しい名前を付けて保存したフォーム(.wfx)と同名にします。
こうすると後々の管理が楽になります。
〈ヒントとコツ〉
イベント処理ファイルを書き出す先のフォルダは、フォーム(.wfx)と同じ場所にします。
こうすると後々の管理が楽になります。
〈ヒントとコツ〉
[三角形の面積を求めるパート2.WFX]は、NULLフォームなのでフォームの編集対象表がありません。
しかし、フォームの編集対象表がある場合には、フォーム(.wfx)とイベント処理(.kex)は編集対象表と同じフォルダに作成します。
こうすると後々の管理が楽になります。
―《複製の作り方3/3》 フォームファイル(.wfx)とイベント処理ファイル(.kex)を関連付ける―
1.[ウィンドウ]メニューで"三角形の面積を求めるパート2.WFX"を選び、フォームの再定義ウィンドウをフォーカスします。
2.[オブジェクトの属性]ウィンドウが[三角形の面積を求めるパート2.WFX]の前面に表示されていることを確かめてください。
〈ヒントとコツ〉
[オブジェクトの属性]ウィンドウが現れていない場合には[書式]メニュー → [オブジェクトの属性] を選択して[オブジェクトの属性]ウィンドウを表示します。
桐9sまでの桐では、[オブジェクトの属性]ウィンドウのコントロールメニューの下付近にあるピンク色の画鋲をクリックして画鋲を立てた状態にします。
こうすると定義中のフォームにフォーカスがある間[オブジェクトの属性]ウィンドウが常に表示されるようになります。
3.次にフォームの外(つまり[ワークスペース])をクリックしてください。
[オブジェクトの属性]ウィンドウのタイトルバーには"フォーム"と表示されているはずです。
4.[オブジェクトの属性]ウィンドウの[イベント]タブをクリックしてください。
〈ヒントとコツ〉
[イベント]タブが見つからない場合には、次のように設定してください。
[書式]メニュー → [定義画面の設定]を選び、[詳細プロパティを使用する]のチェックをオンにします。
さらに、桐9-2012/桐9sの場合には、[操作ナビを消去する]のチェックをオンにします
5.[イベント]タブの[イベントファイル名]の[ファイル参照]ボタンをクリックしてください。
6.[イベント処理ファイルの選択]ダイアログで "三角形の面積を求めるパート2.kex" を選び、[OK]ボタンを実行します。
7.[イベント]タブの[イベントファイル名]の欄に "三角形の面積を求めるパート2.kex" が表示されていることを確認します。
以上までの操作で、
a.フォームファイル:三角形の面積を求めるパート2.wfx の作成
b.イベント処理ファイル:三角形の面積を求めるパート2.kex の作成
c.フォームファイルとイベント処理ファイルの関連付け
が完了しました。
8.[三角形の面積を求めるパート2.WFX]ウィンドウへフォーカスを切り替えて[表示]メニュー → [編集へ]を選びます。
9.[三角形の面積を求めるパート2.WFXは更新されています.保存しますか?]に対して[はい]ボタンをクリックします。
10.[三角形の面積を求めるパート2.WFX]ウィンドウが編集状態になることを確認してください。
これで、三角形の面積を求める.wfx/.kexを元にして、三角形の面積を求めるパート2.wfx/.kexを新しく作ることが出来ました。
―テキストボックス内の文字を選択状態にする―
Windows では編集中のテキストボックス内の文字や数字、つまり値が選択状態になるインターフェースがよく見られます。
そこでフォームアプリケーションでも同じインターフェースを再現しましょう。
なお、[三角形の面積を求めるパート2.WFX]には、3個のテキストボックスがありますが、
個々のテキストボックス毎にイベントハンドラを作成して、同じ処理を記述するのは煩雑であり冗長であるので、
ファミリオブジェクトを新規作成して、3個のテキストボックスで共通のイベントハンドラを利用することにします。
■新しいファミリオブジェクトを作る
1.[表示]メニュー → [再定義]を選び "三角形の面積を求めるパート2.WFX" のフォームの再定義ウィンドウにします。
2.まず、フォームの外(つまり[ワークスペース])をクリックしてください。
[オブジェクトの属性]ウィンドウのタイトルバーには"フォーム"と表示されているはずです。
〈ヒントとコツ〉
ファミリオブジェクトを新規作成する時には、選択状態の(ハンドルが表示されている)オブジェクトが無いようにします。
そうする理由は、選択状態の(ハンドルが表示されている)オブジェクトがあると、そのオブジェクトが自動的にファミリに所属してしまうからです。
3.[書式]メニュー → [ファミリパレット]を選び、[ファミリパレット]ウィンドウを表示します。
4."< 新規作成 >"をクリックします。
5.[ファミリ名]に "ファミリ_1" が表示されたことを確認します。
6. "ファミリ_1" をクリックすると、キャレット(文字カーソル)が現れますので、[ファミリ名]を famTxt に変更します。
7.[ファミリパレット]ウィンドウの[閉じる]ボタンを実行します。
以上で、ファミリオブジェクト: famTxt が作成出来ました。
■任意のオブジェクトをファミリオブジェクトに所属させる
1.まず、フォーム明細部の一番上のテキストボックスをクリックして選択状態(ハンドルが表示されている)にしてください。
2.次に、フォーム明細部の二番めのテキストボックスを[Ctrl]キーを押しながらクリックして選択状態(ハンドルが表示されている)にしてください。
3.さらに、フォーム明細部の三番めのテキストボックスを[Ctrl]キーを押しながらクリックして選択状態(ハンドルが表示されている)にしてください。
4.三個のテキストボックスが選択状態(ハンドルが表示されている)になっていることを確認してください。
5.この時[オブジェクトの属性]ウィンドウのタイトルバーには "三角形の面積を求めるパート2:複数のオブジェクト" と表示されているはずです。
6.[オブジェクトの属性]ウィンドウの[イベント]タブを選びます。
7.右下の[ファミリ名]の[∨]をクリックして、プルダウンリストの中から "famTxt" を選びます。
8.複数のテキストボックスの選択状態(ハンドルが表示されている)を解除するために、フォームの外(つまり[ワークスペース])をクリックしてください。
[オブジェクトの属性]ウィンドウのタイトルバーには"フォーム"と表示されているはずです。
■ファミリオブジェクトのイベントハンドラを作成する
1.[書式]メニュー → [オブジェクトのリスト]を選び、[オブジェクトのリスト]ウィンドウを表示します。
2.[オブジェクトのリスト]ウィンドウの[一覧]サイド(左面)のツリー(木構造)の[ファミリ]をダブルクリックします。
3.[ファミリ]が展開されて、[famTxt]が表示されたことを確認します。
4.[famTxt]をクリックして、[属性]サイド(右面)の[イベント]タブを選びます。
〈ヒントとコツ〉
[オブジェクトのリスト]ウィンドウには、[一覧]サイド(左面)と[属性]サイド(右面)があります。
片方のサイド(面)しか見えない時には、サイド(面)を右クリックして右メニューの[一覧 属性 両方]で "両方" を選びます。
左面と右面の境界の上にマウスポインタを位置付けると、ポインタの形状が変わりマウスドラッグで幅を変更できます。
5.[イベント]タブの[編集開始]のチェックボックスをクリックして、チェック印を付けます。
6.次にイベント名[編集開始]の[…]ボタンをクリックします。
7.[三角形の面積を求めるパート2.kex]のイベント処理定義(ウィンドウ)が現れたことを確認して、
[オブジェクトのリスト]ウィンドウを[×]をクリックして閉じます、
8.イベント処理定義(ウィンドウ)に以下のコード、すなわちイベントハンドラが作成されたことを確認してください。
手続き定義開始 famTxt::編集開始()
手続き定義終了
■ファミリオブジェクトのイベントハンドラの内容を記述する
1.イベント処理定義(ウィンドウ)のイベント定義のツールバーの[手続き編集]ボタンをクリックして[手続き編集モード]にします。
〈ヒントとコツ〉
ツールバーボタンは、手続きの表示単位を切り替えるときに使用します。
ツールバー上の ドロップダウン リストボックスをクリックすると、イベント処理ファイルに保存されている手続きの一覧と、
その手続きを使用するオブジェクト名の一覧が表示されます。
ドロップダウン リストボックスでオブジェクト名とイベント名を選択すると、画面に表示する手続きを切り替えることができます。
すべての手続きを表示しているときにドロップダウン リストボックスを使用すると、該当する手続きにジャンプできます。
イベントハンドラ以外の一般手続きを追加する場合は、すべての手続きを表示してから作業します。
一般手続きを追加しているとき、ドロップダウン リストボックスの一覧に、追加した手続きを表示させる場合は[手続き定義リストの作成]ボタンをクリックします。
2.イベント処理定義(ウィンドウ)で "手続き定義開始 famTxt::編集開始()" と "手続き定義終了"
の範囲内に実行する内容を記述します。
次のコマンドを記述してください。
変数宣言 自動,整数{ &文字数 }
メソッド呼び出し 戻り値 = &文字数,&this.編集選択位置設定( 1 ,-1 )
〈ヒントとコツ〉
変数:&this は、フォーム( .wfx )にイベント処理ファイル( .kex )がセットされている時に自動的に用意される文字列型変数です。
変数:&this のスコープ(範囲)は、局所変数と同じです。
変数:&this には、イベントが発生したオブジェクト名が代入されています。
〈ヒントとコツ〉
[三角形の面積を求めるパート2.WFX]には、3個のテキストボックスがありますが、
個々のテキストボックス毎に同じ処理内容のイベントハンドラを作成するのは冗長ですので、ファミリオブジェクトを作成して、
3個のテキストボックスで共通のイベントハンドラを利用します。
トップページに戻る
桐の釣魚大全のトップ > 新 フォームアプリケーション入門 §2