PowerCOBOLで表をクリックして、その値を親フォームに渡す

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

というわけで、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 変数ね。

トラックバック(0)

このブログ記事を参照しているブログ一覧: PowerCOBOLで表をクリックして、その値を親フォームに渡す

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5384

コメントする

このブログ記事について

このページは、shinodaが2019年7月14日 02:25に書いたブログ記事です。

ひとつ前のブログ記事は「大畠港でミニカサゴ(笑)」です。

次のブログ記事は「6月の選手権では、息子初の決勝進出を見た」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら