■14199 / ) |
Re[7]: 行制約について
|
□投稿者/ ONnoji -(2024/02/28(Wed) 22:55:45)
| 2024/02/28(Wed) 23:44:25 編集(投稿者) 2024/02/28(Wed) 23:12:46 編集(投稿者)
>>[フォーム+イベント処理+表]であれば簡単に出来ますが・・・ > で、本題のフォーム+イベント処理ですが、明日トライしてみます! > > ネットで調べてみたら ソース値更新 ケース開始 オブジェクト操作 で出来そうだと思いました。 > 明日また報告します!
まず、[ソース値更新]イベントは必要ないと思いますよ。キッパリ(^^)ok
[ソース値更新]イベントはチェックボックス等(トグルボタン)では非常に良く使いますが、
テキストボックスでは、私は不便な事の方が多いので使いませんよ。
また[オブジェクト操作]を使って、フォームの表示モードを変更したりとか、
テキストオブジェクトをフォーカス禁止にするとかも必要ありませんよ。
あくまでも個人的な意見ですが、これらの発想はDOS桐の古典一括処理と桐ver.7 の拡張一括処理の流儀の残滓のように思いますよ。 ・・・・・・・・・・・・・・ ・・・・ ・・・・ ・・・・・・・・・・
今風(今様)の[フォーム+イベント処理]では、一括処理の流儀の残滓の影響を受ける必要は全くないと申し上げたいですね。 ・・・・・・・・・・・・・・・・・・・・・・・・ 余談ですが・・・(^^ゞ
願わくば、ダークサイドからライトサイドへ移動されることを期待したいですね。アハハha。(^^ゞ
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
さて、プログラムの書き方は自由ですから、これという決まりはありません。
なので100人がプログラムを書けば、100通りのプログラムが出来上がります。
そんなファジーなプログラムですが、
私(ONnoji)なりの方法をご紹介するのでご参考にしてください。
なお、添付ファイルは数日を目途に削除しますのでお早めにダウンロードしてください。
添付ファイルを解凍すると、次のファイルがあります。
test.kex test.TBX test.WFX
フォーム:test.WFX を開いてください。
テキストボックスの[入力前]イベントと[入力後]イベントは1組で使用することが多いです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
詳しくは、以下の拙作webページを参考にしてください。
16.3 テキストボックスのイベント|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部 http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section16-3
p.s.
<参考>
■test.WFX
フォーム ├ ファミリ ├ ワークスペース ├ フォーム操作バー ├ フォームヘッダ部 │ ├ a │ ├ lbl商品名 │ ├ lbl数量 │ ├ lbl納期 │ └ lbl備考 └ フォーム明細部 ├ 行セレクタ ├ txt商品名 ├ txt数量 ├ txt納期 └ txt備考
■test.kex
名札 メイン 変数宣言 局所,文字列{ &m編集文字列 }
*
手続き定義開始 txt数量::入力前(参照 文字列 &編集文字列)
&m編集文字列 = &編集文字列
手続き定義終了
手続き定義開始 txt数量::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続) 変数宣言 自動,文字列{ &title = "txt数量::入力後( )", &msg } 変数宣言 自動,整数 { &ans }
if ( [納期] = #u )
** nop: no operation 納期が空なので何もしない else
if ( &m編集文字列 <> &編集文字列 )
&msg = "<警告>" &msg = &msg + "\n\n・[数量]の値が書き換えられましたが、この操作は許可されていません" &msg = &msg + "\n\n⇒自動的に数量の値を直前の数値( " + &m編集文字列 + " )に戻します" &msg = &msg + "\n\n<ヒント>" &msg = &msg + "\n\n納期の値が未定義の時のみ、数量が変更可能可能です" &msg = &msg + "\n\n[納期]= " + #str( [納期] ) &msg = &msg + "\n\n[数量]の値を書き換える必要が有る場合には[納期]の値を空欄にしてください" メッセージボックス &title, &msg, アイコン = e, ボタン指定 = 1, 制御文字展開 = する, &ans
&編集文字列 = &m編集文字列 else
** nop: no operation テキストの入力後の値が入力前の値と同じなので何もしない end end
手続き定義終了
p.p.s.
[メッセージボックス]コマンドは改行が出来るので便利ですが、[確認]コマンドでお茶を濁す人が多いですよね。
[メッセージボックス]コマンドでも、そんなに手間でも無さそうですが、(^^ゞ
長年の習慣で[確認]コマンドを使う人が多いように思います。
今回のサンプルでは、メッセージボックスの文言にこだわってみました。
何故ならば、せっかくデータ入力のリズムが調子よくなってきたのにも関わらず、 ・・・・・・・・・・・・・・・・・・・・・・・・・・
入力作業を中断する割り込み、つまりメッセージボックスを表示するのですから、 ・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・
「入力中のオペレータさんに中断する理由が納得していただけるような文言」にこだわりましたよ。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
アプリケーションの利用者への「明快な情報フィードバック」が対話型のアプリケーションでは必須になると思いますよ。
つまり、「作る人の優先(都合)でなくて、使う人の分かり易さ優先のユーザインタフェースです」ゾッ!。 ・・・・・・・・・・・・・・・・・・・・・・
|
|