PowerCOBOLで表をクリックして、その値を親フォームに渡す[プログラミング]
(2019-07-14 02:25:58) by shinoda


例えば、子画面(サブフォーム)で「商品一覧」を表示して、表の中の任意の行をダブルクリックしたら、その行の商品コードが親画面の商品コード欄にセットされるというもの。
実際の業務システムでもよくある機能だよね。

というわけで、PowerCOBOL の実装でのメモ。

まず、DblClick イベントではクリックした位置(座標)が取れないところで悩んでしまうのだが、実はダブルクリックをしたときには、DblClick イベントが走る前に、MouseDown イベントが走る。
そして、MouseDown イベントは POW-ARG-X や POW-ARG-Y といった、クリックされた位置(XY座標)が引数で渡される。

表(テーブル)コントロールの1行の高さはディフォルトで 300だ。単位はよくわからんけど、その辺はおいおい勉強していくということで・・・(^^;

なので、1行目の一番上の Y座標は 300で、一番下が 599。2行目は Y座標が 600〜899の間。つまり、

COMPUTE IDX = POW-ARG-Y / 300.

とすれば、IDX に「何行目か?」の情報がセットされる。

あとは、その商品コードを表の中か、あるいは別途用意した配列(予め表の並びと同じように商品コードがセットされたもの)などから取得して、親画面との情報のやり取りに使う EXTERNAL 変数にセットしてやる。

MOVE CODE-LIST(IDX) TO RE-CODE.

そして、DblClick イベントで、

INVOKE MYSUBFORM1 "CloseForm"

するだけである。あ、上の CODE-LIST ってのが表(テーブル)と同じ並びで商品コードがセットされている配列で、RE-CODE が親画面との情報のやり取りに使われる EXTERNAL 変数ね。

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8