過去の桐井戸端BBS (桐ver.9)
23040 桐Ver9フォームで参照用のフォームを表示してそれをクリックすることでデータ入力するということをしたい 山本 栄弘 2003/10/28-21:22
メインフォームのAAA項目入力時参照用にサブフォームを表示して
一覧表示された項目の希望する行データをクリックすることで
この値を、メインフォームのAAA項目へ自動的に入力することは可能でしょうか。
一応メインフォームのAAAにくるとサブフォームが開き参照データを一覧表示するところまでは出来ています。

希望参照値を受ける変数を宣言し メソッド呼び出し ソース値取得をイベントに記述してみましたがだめでした。
イベントの書式が理解できないまま、記述しているのでうまくゆかないのだと思います。
具体的(初心者向き)によろしくお願いします。

23045 Re:桐Ver9フォームでの参照入力 悲しげ 2003/10/29-00:56
記事番号23040へのコメント
どもっ、山本さんは

>希望参照値を受ける変数を宣言し メソッド呼び出し ソース値取得を
>イベントに記述してみましたがだめでした。
>イベントの書式が理解できないまま、記述しているのでうまくゆかないのだ
>と思います。

ここに、その間違った記述を挙げてもらってですね、みんなで
それを添削すると云う形にしたらいいと思います。
その方が、一般論的に説明を求めるよりも生産的でしょうから。

23050 Re:桐Ver9フォームでの参照入力 アックン 2003/10/29-12:14
記事番号23040へのコメント
山本 栄弘さん、こんにちは。
表引き風に、他表の項目値を選んだら自表の項目値になる、という処理ですか。
具体例をあげておきますが、イベントがややこしいので、最初にポイントだけ説明します。

1. 項目値を変数に代入するには、 
   &STR = [摘要] というふうにするだけでいいです。
ソース値は項目名・変数・式などです。項目値そのものではありません。
項目値はセルが保持している値です。紛らわしくてよく間違えるので、違いを理解しておきます。

2. 自表の項目に変数値を入力するときは、入力前イベントで &編集文字列 に
変数を代入するだけでいいです。
(ここで行訂正を使おうとすると、表示/訂正モードの切替をメソッドで操作する必要が出てくるのですが、
イベントの種別によってメソッドの使用が制限されているため、大変難しくなります。)

3.下記例では、たとえば一覧表オブジェクトなり伝票オブジェクトの明細行を
クリックして項目値を選びます。
このとき選べる項目(列)は1個でも複数個でもかまいませんが、
明細行の1個のセルをクリックしたときの処理を書いています。
もし明細行の行セレクタ以外のどこをクリックしても、その行の1ないし複数の
項目値を変数に代入したいときは、マウス左クリックイベントの &明細番号を利用しますが、
処理がさらに複雑になります。

4. フォームとイベントの例
簡単に挙動確認済ですが、他表のデータを選ぶときの操作は、
テキストボックス上のマウスクリックのみに対応してます。Enterキー押下時処理は書いていません。

自表: A.frm (編集対象表: A.tbl )
  t摘要(テキストボックス)  ソース:[摘要]
  この[摘要]に、B.tblで選んだ項目値を入力します。

他表: B.frm (編集対象表: B.tbl )
  例1:1個のテキストボックス(ソース:項目値)から項目値を1個だけクリックで選ぶ。
  例2:複数あるテキストオブジェクトの中から、項目値を1個だけクリックで選ぶ。

-------------Aフォームイベント-------------(C)akkun(=^・^=)
名札 メイン
 var 整数{ &A }

proc フォーム::フォーム開始(長整数 &表番号)
 &A = &hwindow
end

proc t摘要::入力前(参照 文字列 &編集文字列)
 var 文字列{ &Button }
 フォーム呼び出し "B" , ボタン = &Button
 if( &Button )
   &編集文字列 = &STR
   &Button = ""
 end
end

proc t摘要::ソース値更新()
 method @フォーム.更新モード設定( 2 )
end

-------------Bフォームイベント-------------(C)akkun(=^・^=)
名札 メイン
 var 整数{ &B }

proc フォーム::フォーム開始(長整数 &表番号)
 &B = &hwindow
end

***例1:選ぶ項目が1個だけのとき
proc t摘要::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整
数 &フラグ,参照 長整数 &処理中止)
 &STR = [摘要]
 method @コマンドボタン_閉じる.実行()
end

**例2:選ぶ項目が複数あるときは、各オブジェクトをファミリにする。
** この例では、オブジェクト名を t項目名 と名付けているので、
**   #sstr( &this , 2 )
**という式で、2文字目から取り出して、[項目名]を作っています。
*proc ファミリ_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長
整数 &フラグ,参照 長整数 &処理中止)
* コマンド "&STR=["+#sstr( &this , 2 )+"]"
* method @コマンドボタン_閉じる.実行()
*end
--------------------------
注意: 例1・例2のどちらかをコメント行にしてください。
23053 Re:桐Ver9フォームでの参照入力 アックン 2003/10/29-14:15
記事番号23050へのコメント
追記
1. イベント(kev)の「フォーム」は半角で記述してください。
(掲示板に半角が使えなくて、全角に自動変換されて表示されます。)
2.両イベント共、下記の行は直接関係ないので不要です。
(ちなみにこの変数は、メソッドの中で、ハンドル=&A というふうに使います。)
>名札 メイン
> var 整数{ &A }
>*
>proc フォーム::フォーム開始(長整数 &表番号)
> &A = &hwindow
>end

3. コマンドボタン_閉じる
コマンドボタンを1個作成して、その「オブジェクトの属性」から「機能名」に「閉じる」を選んでおきます。
オブジェクト名を コマンドボタン_閉じる にします。
ボタン作成時に自動的にオブジェクト名(コマンドボタン_数字)がつけられ、「コマンドボタン」は半角になってます。
23082 Re:桐Ver9フォームでの参照入力 山本 栄弘 2003/10/30-21:05
記事番号23053へのコメント
アックンさん
諦めかけていたのですが詳細なコメントを頂きチャレンジしたいと思っています。
愚鈍な私のことですから、時間がかかると思いますがとりあえずお礼を申し上げます。

23168 Re:桐Ver9フォームでの参照入力 山本 栄弘 2003/11/02-19:22
記事番号23082へのコメント
追記
試作してA.wfmを開いて[摘要]項目にきても他表:B.wfm(参照表)が表示されません。
B.wfmを単独で開くとエラーにもならず表示出来るのですが…
どんな原因が考えられますか、お暇なときよろしくお願いします。
23179 Re:桐Ver9フォームでの参照入力 アックン 2003/11/04-11:47
記事番号23168へのコメント
山本 栄弘さん>
>試作してA.wfmを開いて[摘要]項目にきても他表:B.wfm(参照表)が表示されません。
>B.wfmを単独で開くとエラーにもならず表示出来るのですが…
 たちまち思いつくのは、イベントが有効になっているかどうかくらいです。
A.wfm の t摘要 「オブジェクトの属性」>イベント(ダブ)
「イベント(E)」の「入力前」にチェックを入れておいてください。

ところで最初の質問では、サブフォーム(いわゆるメイン&サブフォーム)を使っているのですか?
私の前回の例示では、A.wfm とは別のウィンドウに B.wfm を表示します。
表引きと同じです。サブフォームではありません。
もしメインフォーム A.wfm に同じウィンドウのサブフォーム B.wfm から値を参照したい(複写したい)のでしたら、
そのイベントも書いておきます。
(なお、ファミリを使う場合は、前回書き込みを見てください。)

別ウィンドウに B.wfm を表示するコマンドは、下記例の
 フォーム呼び出し "B" , ボタン = &Button /*(←)「フォーム」は全角 */
です。
ここのフォーム名 "B" を、確認しておいてください。
また質問なりご報告をお願いします。急ぎません。

1. 別ウィンドウの B.wfm の値を複写する方法

・A.wfm のイベントファイル A.kev
proc t摘要::入力前(参照 文字列 &編集文字列)
 var 文字列{ &Button }
 フォーム呼び出し "B" , ボタン = &Button /*(←)「フォーム」は全角 */
 if( &Button )
   &編集文字列 = &STR
 end
end

/* (↓)「ソース」は半角 */
proc t摘要::ソース値更新()
 method @フォーム.更新モード設定( 2 ) /*(←)「フォーム」は半角 */
end

・B.wfm のイベントファイル B.kev
/* (↓)「マウス」「クリック」は半角 */
proc t摘要::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 &STR = [摘要]
 method @コマンドボタン_閉じる.実行() /* (←)「コマンドボタン」は半角 */

end

2. 同じウィンドウのサブフォーム B.wfm の値を複写する方法
・A.wfm のイベントファイル A.kev
/* (↓)「マウス」は半角 */
proc t摘要::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 &STR = [摘要]
 method ハンドル=&hwindow, @t摘要.フォーカス設定()
 method ハンドル=&hwindow, @フォーム.更新モード設定( 2 ) /*(←)「フォーム」は半角 */
end

・B.wfm のイベントファイル B.kev
proc t摘要::入力前(参照 文字列 &編集文字列)
 &編集文字列 = &STR
 &STR = ""
end


23180 Re:桐Ver9フォームでの参照入力 アックン 2003/11/04-11:53
記事番号23179へのコメント
訂正:2の場合の A.kev と B.kev の内容が逆でした。
正解は次の通りです。
2. 同じウィンドウのサブフォーム B.wfm の値を複写する方法
・A.wfm のイベントファイル A.kev
proc t摘要::入力前(参照 文字列 &編集文字列)
 &編集文字列 = &STR
 &STR = ""
end

・B.wfm のイベントファイル B.kev
/* (↓)「マウス」は半角 */
proc t摘要::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 &STR = [摘要]
 method ハンドル=&hwindow, @t摘要.フォーカス設定()
 method ハンドル=&hwindow, @フォーム.更新モード設定( 2 ) /*(←)「フォーム」は半角 */
end

23182 Re:桐Ver9フォームでの参照入力 山本 栄弘 2003/11/04-18:54
記事番号23180へのコメント
アックンさん有難うございました。
ご指摘通り「イベント(E)」のチェック漏れでした。手入力したので漏らしました。
参照表示は完成しました。ところが入力が出来ません。参照項目が計算項目ですがこれは関係ないですね。
気づかれる点がありましたらまたよろしく願います。

23195 Re:桐Ver9フォームでの参照入力 アックン 2003/11/05-10:48
記事番号23182へのコメント
山本 栄弘さん>
>参照表示は完成しました。ところが入力が出来ません。参照項目が計算項目ですがこれは関係ないですね。
はい。それは関係ないと思います。

1. "「イベント(E)」のチェック漏れ" が他にもないか、調べてみてください。

2. 変数( &STR )の値を確認してください。
メニューバー>ツール>変数管理>組み込み変数 STR に複写したい値が入っていますか?
イベントの適当な箇所に、確認コマンドを入れてみる方法もわかりやすいです。

  確認 &STR+" / 今 B.wfm の・・です" /* ←自分にわかるように書いてください。 */

3. イベントをデバッグしてみることをおすすめします。

4. もう一度同じ事を聞きますが、メイン&サブフォームですか?
もしメイン&サブフォームでないときは、表引きを使えばいいのですが。
(山本さんの桐の経験なり技量が私にはわからないので、失礼かもしれませんが、書いておきます。)
23221 Re:桐Ver9フォームでの参照入力 山本 栄弘 2003/11/06-13:20
記事番号23195へのコメント
アックンさん
いつもお手数かけています。
おかげさまで牛歩ながらすすみ一部を除き参照入力ができましたが次の3点が不明です。
1点目
参照項目を[CODE]にすると1行目に限り選択項目値が取得できず”ku324この項目は更新出来ません”という
メッセージが表示されエラーになります。2行目以降を選択すると問題なく値を取得できます。
参照項目を[番号]に変更するとすべての行の値が選択可能になります。
使用している参照用B.tblは次のようなものです。
項目1  項目2  項目3  項目4  
計算項目 普通項目 普通項目 計算項目    [CODE]…[通番]を2桁表示にするため#条件選択で作成
[CODE] [費目] [番号] [通番]    [費目]… コード選択用対応見出し項目
 01   収入   01   1      [番号]… 今回試しに[CODE]を置換処理して入力 
 02   支出   02   2      [通番]… "#直前値([],0)+1"で計算入力
 03   税金   03   3  
 04   経費   04   4 
 05   給与   05   5 
2点目
A.kevの最後の手続き定義開始の3行が実行されないようにおもわれます。procの次の行に確認コマンドを
入れても表示されません。
3点目
"例2の選ぶ項目が複数あるとき"が値の取得が出来ません。ファミリの書式がまずいかと思いますが自分では忠実にかいたつもりですが。

私の桐についての技術レレベルはMs-dos版につきましては自分では不自由なく使いこなしています。(含一括)
windows版につきましては0です。現在Ver9体験版です。使いこなせる見込みがたてばVer10を購入したいと考えています。
(Ver7はありますがなにもしていません)
こりずによろしくお願いします。
23226 Re:桐Ver9フォームでの参照入力 アックン 2003/11/06-16:33
記事番号23221へのコメント
山本 栄弘さん>
1点目: 計算項目だから表示モードを訂正モードに切り替えできないよ、というメッセージですね。以下の方法で回避できます。
フォーム定義画面で、メニューバー>書式>オブジェクトのリスト を出してください。左の方にオブジェクト名が縦に並んでいます。
オブジェクト名をどう名付けているかは私にはわかりませんが、仮に、「フォーム明細部」の下に
「行セレクタ」、続けて「tCODE」[t費目]の順に並んでいるとしたら、「tCODE」と[t費目]の位置を入れ替えるだけです。
入れ替え方法は、動かしたいオブジェクトを選んでおいて、選択状態になってますから、
Shift+矢印キー(↓↑)で位置を上下に動かして、上から「行セレクタ」[t費目]「tCODE」の順にしてください。
位置を入れ替えても、オブジェクトの見た目の位置関係は変わりありません。

2点目: そのイベントにチェックマークが入ってないのでは?
オブジェクトの属性>イベント>「イベント(E)」でチェックマーク入れるときに、文字の部分をダブルクリックすると、
チェックマークが入ると同時に、イベントファイル(kev)に自動で「手続き定義開始・・」「手続き定義終了・・」だったかの
2行が書き込まれて、編集状態になります。

3点目: オブジェクト名の名付け方次第で、式内容が変わります。
例示したのは、t摘要 t科目というふうに、最初の文字が t の場合の式だったと思います。
それと、オブジェクトの属性>イベント(タブ)>ファミリ名 を設定してありますか。
ファミリの設定方法については、かなりややこしいので、マニュアルを読んでください。
メニューバー>ヘルプ>トピックの検索>目次(タブ)>一括処理&イベント処理>一括処理&イベント処理リファレンス>htmlファイルが開くので、目次(タブ)>入門>イベント処理>ファミリを使用する

それはそうと、三度も同じ事を聞くんですけど、
メイン&サブフォーム使用ですか? それとも表引き風に他ウィンドウ使用ですか?
私の方はやりとりを続けることは、いっこうに差し支えないです。
23257 Re:桐Ver9フォームでの参照入力 山本 栄弘 2003/11/08-12:05
記事番号23226へのコメント
>
>それはそうと、三度も同じ事を聞くんですけど、
>メイン&サブフォーム使用ですか? それとも表引き風に他ウィンドウ使用ですか?
>私の方はやりとりを続けることは、いっこうに差し支えないです。


アックンさん
いつもすみません。
メイン&サブフォームは使用していません。
表引き風につかっています。
補助的なフォームといった意味でサブフォームと書いてしまいました。
23258 Re:桐Ver9フォームでの参照入力 アックン 2003/11/08-13:37
記事番号23257へのコメント
山本 栄弘さん>
>表引き風につかっています。
了解です。またお時間許すときに、ご報告ください。
23046 桐Ver9フォームでの参照入力 山本 栄弘 2003/10/29-08:47
記事番号23045へのコメント
早速コメント有難うございました。
語学の勉強をするか、語学と桐ウインドウズを勉強するか、
どちらも諦めるか、掲示板を眺めながらしばらく考えます。
桐Ver9は体験版ですから、どうしょうか迷っています。
リファレンスを読んで理解できなければ、桐そのものを楽しみとする方は
ともかく、実用には時間がかかりすぎるので悩みます。
と言う私も桐そのものを楽しんでいる部分もかなりありますが…
桐Ver5迄なら自分でなんとか使いこなせるのですが…
有難うございました。
23048 Re:桐Ver9フォームでの参照入力 悲しげ 2003/10/29-10:57
記事番号23046へのコメント
どっも、山本さん

>語学の勉強をするか、語学と桐ウインドウズを勉強するか、どちらも
>諦めるか、掲示板を眺めながらしばらく考えます。

はぁ? (?_?)

戻る