過去の桐井戸端BBS (桐ver.9)
28081 メイン&サブフォームでどの項目がクリックされたかにより入力する項目を変えたい 手塚 修 2004/11/01-19:47
メイン&サブフォームで、メインフォーム上のテキスト項目「運転手」「助手」に
サブフォーム(社員名)上の社員名をクリックして入力反映させようとしています。
テーブルは別です。

メインフォーム上で「運転手」をクリックした時には、サブフォーム(社員名)を表示し、
社員名をクリックすると[運転手」に入力される。
「助手」をクリックした時には、サブフォーム(社員名)を表示し、社員名をクリックすると[助手」に入力される。

メインフォームのどの項目がクリックされたか?によりサブフォーム上の社員名を
取得し入力したいのですが、どのように考えればよいのか?どのイベントを使えばよいのか?
どのように書くのかを教えてください。

メインフォームのKEVでは、
 手続き定義開始 t運転手名::入力前(参照 文字列 &編集文字列)
  &編集文字列=&STR 
  &STR=""      
 手続き定義終了
サブフォームのKEVでは、
 手続き定義開始 t姓名::マウス左クリック(長整数....&処理中止)
  &STR=[姓名]
  メソッド呼び出し ハンドル=&hwindow,@t運転手名.フォーカス設定()
  メソッド呼び出し ハンドル=&hwindow,@フォーム.更新モード設定(2)
手続き定義終了
と書いています。

「運転手」が未定義値であれば「運転手」に、「助手」が未定義値であれば「助手」に入力する。
これは使いたくないのですが?どうすればよいのでしょうか?

よろしくお願いいたします。

28082 Re:どの項目がクリックされたかにより入力する項目を変えたいが? ONnoji 2004/11/01-21:07
記事番号28081へのコメント
手塚さん、こんにちは。

フォームの[イベントハンドラ]や[一般手続き]でも、
#項目番号()関数の引数に未定義値(#u)を指定すると、現在の項目番号を取得できます。

※ところで[式入力]ダイアログには書いてある情報が、[関数]ヘルプには漏れています。
トホホ。

(例)

 変数宣言 自動,文字列{ &fieldName, &dataType, &fieldKind }
 変数宣言 自動,整数 { &fieldNum }
 &fieldNum = #項目番号( #u )
 &fieldName = #項目属性( &fieldNum, 1 ) /* 項目名を取得 */
 &dataType = #項目属性( &fieldNum, 2 ) /* データ型を取得 */
 &fieldKind = #項目属性( &fieldNum, 6 ) /* 項目種別を取得{基本、計算、ふりが
な} */

これは、解決策ではありませんけれど。
ご参考までに。m(__)m


28087 Re:どの項目がクリックされたかにより入力する項目を変えたいが? 悲しげ 2004/11/01-23:59
記事番号28081へのコメント
書かれていませんが、多分、メインはカード、サブは一覧表フォームだろうと仮定してコメントします。
で、普段は社員名サブフォームを表示させておきたくないようなので、
メインフォーム上のサブフォームオブジェクトの画面表示はオフにしておきます。
で、メインフォームのテキスト項目「運転手」「助手」のどちらかを
左クリックしたら(と云うよりフォーカス取得の方が使いやすそう)、
社員名サブを画面表示させる。
メインフォームでどのテキストをクリック(フォーカス)したかについては、
例によってファミリを使って&thisで取得してみる(「運転手」と「助手」のふたつだけなので、
個々のテキスト毎で判断してもよいかもしれないが)
次、社員名サブの方では、あるレコードを左クリックしたら当該の
項目値を変数に取得した後、編集表を変更して先に把握済のどちらかの
項目値に代入する。
マウス左クリックで訂正モードになるとかならないとかを含めて若干面倒なので、
上記は全て表示モードでやることにしてみた。
以上を挙げてみます。

28095 Re:どの項目がクリックされたかにより入力する項目を変えたいが? 手塚 修 2004/11/02-18:48
記事番号28087へのコメント
いやぁ〜すごいですね。思っていた通りに作ってくれました。完璧です。
ありがとうございました。

返事遅くなりました。当方のkevに当てはめるのに時間がかかりました。
半日もかかりました。でも、今は、うまく動くようになりました。

お二方が教えてくれた事、まだまだ理解するレベルには至っておりませんが、
これからも頑張ります。

ONnojiさん 悲しげさんお世話になりました。

ありがとうございました。


戻る