過去の桐井戸端BBS (桐ver.9)
23538 条件によりproc(手続き定義)を制御したい 山本 栄弘 2003/11/26-22:41
A.tblのAフォームの複数項目に入力する際B.tblのBフォームを表示、
表引き風に参照して入力しています。
参照項目も更新する項目に対応した項目が存在します。
今は更新項目数に対応するだけ参照フォームを作成する方法で、完成しています。

ですが参照tblが1つなのでフォームも1つにしてAフォームの更新する項目に対応して
Bフォームのイベントを制御し参照項目を表示たいのです。

AフォームのイベントでBフォームを開く直前に設定した
変数値でBフォームのprocを制御する方法を考えていますが条件又は分岐が思いどおりにゆきません。
簡単に出来そうなら書式を教えて下さい。
桐Ver9 2004を使用しております。よろしくお願いします。
23547 Re:条件によりprocを制御したい うにん 2003/11/27-12:50
記事番号23538へのコメント
procというのは「手続き定義開始」の別名なのでそれを制御とは?
「オブジェクト操作」でBフォームのテキストのソースを設定したいのだと思いますが?

23548 Re:条件によりprocを制御したい アックン 2003/11/27-13:15
記事番号23538へのコメント
山本 栄弘さん、こんにちは。
Bフォームのテキストオブジェクトのソースを、条件によって変更するわけですね。
下の例では、Aフォームのテキストオブジェクトの tあ が編集モードまたは訂正モードになれば、
Bフォームの項目(ラベルとテキスト)を変更します。
Bフォームがまだ開かれてなければ、開きます。

操作手順:Aフォームから先に起動します。
テストなので、条件となる変数値をマニュアル操作で変更することにします。
変数管理(メニューのツール→変数管理)画面を出しておいて、変数値を 1 か2 に変更しておきます。
あとは、tあ を訂正/編集モードにすればいいです。

Bフォームを呼び出すタイミングに、入力前イベントを使ってますが、
希望する他の適当なイベントに変更してみてください。

・A.wfm
省略
・A.kev
---------------------------
名札 メイン
 var 整数{ &win[2] }

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 &win[1] = &hwindow
手続き定義終了

手続き定義開始 tあ::入力前(参照 文字列 &編集文字列)
 if( #ウィンドウハンドル( &win[2] ) )
   method ハンドル=&win[2], @b_1.実行()
 else
   フォーム呼び出し "B", 編集表=しない
 end
手続き定義終了
---------------------------
・B.wfm
コマンドボタンをワークスペース(フォーム定義画面の周囲の白紙部分)に配
置します。
コマンドボタン  オブジェクト名:b_1
機能名     機能パラメータリスト
手続き実行   "あいう"
---------------------------
・B.kev
名札 メイン

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 &win[2] = &hwindow
 method ハンドル=&hwindow, @b_1.実行()
手続き定義終了

proc あいう()
 if( #ウィンドウハンドル( &win[1] ) )
   if( &秒=1 )
     オブジェクト操作 ハンドル=&hwindow, @a1.標題 = "アイテム"
     オブジェクト操作 ハンドル=&hwindow, @t1.ソース = "[アイテム]"
   else if( &秒=2 )
     オブジェクト操作 ハンドル=&hwindow, @a1.標題 = "名称"
     オブジェクト操作 ハンドル=&hwindow, @t1.ソース = "[名称]"
   end
 end
end

23549 Re:条件によりprocを制御したい 山本 栄弘 2003/11/27-13:26
記事番号23547へのコメント
うにんさん

>procというのは「手続き定義開始」の別名なのでそれを制御とは?
>「オブジェクト操作」でBフォ
>ームのテキストのソースを設定したいのだと思いますが?

なにをどうすればよいか判りませんがAフォームのAa項目を更新するときは
BフォームのBa項目を参照用に表示し、AフォームのAb項目を更新するときは
BフォームのBb項目を参照用に表示出来るように希望しています。
やはり参照用フォームを1つしか作成せずにすませるのは無理でしょうか。
23554 Re:条件によりprocを制御したい アックン 2003/11/27-17:38
記事番号23549へのコメント
山本 栄弘さん> No.23549 のようにするには、No.23548 のA.kev をこんなふうにすればいいですよ。

手続き定義開始 tあ::入力前(参照 文字列 &編集文字列)
 &秒 = 1
 if( #ウィンドウハンドル( &win[2] ) )
   method ハンドル=&win[2], @b_1.実行()
 else
   フォーム呼び出し "20031127フォームのソース変更B", 編集表=しない
 end
手続き定義終了

手続き定義開始 tい::入力前(参照 文字列 &編集文字列)
 &秒 = 2
 if( #ウィンドウハンドル( &win[2] ) )
   method ハンドル=&win[2], @b_1.実行()
 else
   フォーム呼び出し "20031127フォームのソース変更B", 編集表=しない
 end
手続き定義終了
23561 Re:条件によりprocを制御したい アックン 2003/11/28-11:07
記事番号23554へのコメント
山本 栄弘さん> うっかりしてレスをうにんさんの方にぶらさげてしまったのですが、このまま続けさせてもらいます。
昨夜ふっと気づいたことに、Bフォームを表示している最中にはソースを変更できないですよね、たしか。

2003〜B.kev の方を書き直しました。
2003〜A.kev はそのままでいいです。
2003〜B.wfm にコマンドボタンを1個追加します。
 オブジェクト名: b_2
 機能名  機能パラメータリスト
 閉じる  破棄する

・20031127フォームのソース変更B.kev
名札 メイン
 var 整数{&win[2]}

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 &win[1] = &hwindow
手続き定義終了

手続き定義開始 tあ::入力前(参照 文字列 &編集文字列)
 &秒 = 1
 if( #ウィンドウハンドル( &win[2] ) )
   method ハンドル=&win[2] , @b_2 . 実行()
   フォーム呼び出し "20031127フォームのソース変更B", 編集表=しない
 else
   フォーム呼び出し "20031127フォームのソース変更B", 編集表=しない
 end
手続き定義終了

手続き定義開始 tい::入力前(参照 文字列 &編集文字列)
 &秒 = 2
 if( #ウィンドウハンドル( &win[2] ) )
   method ハンドル=&win[2] , @b_2 . 実行()
   フォーム呼び出し "20031127フォームのソース変更B", 編集表=しない
 else
   フォーム呼び出し "20031127フォームのソース変更B", 編集表=しない
 end
手続き定義終了

手続き定義開始 tあ::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整
数 &入力継続)
 cond( #ウィンドウハンドル( &win[2] ) ) method ハンドル=&win[2] , @b_2 . 実行()
手続き定義終了

手続き定義開始 tい::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整
数 &入力継続)
 cond( #ウィンドウハンドル( &win[2] ) ) method ハンドル=&win[2] , @b_2 . 実行()
手続き定義終了

戻る