過去の桐井戸端BBS (桐ver.9)
28123 取消のコマンドボタンを押すとマイナス計算をさせ、押してないときは通常計算をさせたい 悩めるオジン 2004/11/05-23:09
先輩諸氏にお願いいたします。

 フォーム上に 
  [数量]*[単価] [金額]としてあるのですが、マイナス計算の
  場合に常に-[数量]の形で入力しているのを、コマンドボタンから
  数量を入力する時点で<->を入れたいというのが目的です。

  取消のボタンを押すと、マイナス計算をさせ、押してないときは
  通常計算をするという具合に・・・。

  イベントに書き込むポイントをお願い致します。

28124 Re:コマンドボタンで代入 宮城 2004/11/06-08:33
記事番号28123へのコメント
既存コマンドボタンにどう設定されているかわかりませんが、
[数量]*[単価]という式がなんらかの形で設定されているものとして、
そのボタンをコピーして貼り付け(必要ならkevの関係部分も)、
その数式部分を-[数量]*[単価]とすれば済んでしまうような気がするのですが。

# ひょっとして、今の計算やんぴにしたいってこと? だった
# ら、本来の項目値を訂正する前に、仮の変数でも使って心ゆ
# くまで計算結果を見せてから訂正するようにするとかもあり
# そう。


28125 Re:コマンドボタンで代入 宮城 2004/11/06-09:01
記事番号28124へのコメント
これって単純な積なのだったら、妙なことをすることもなく項目計算式を[数量]*[単価]とし、
[数量][単価]それぞれに「入力後再計算」のチェックを入れておくだけで必要にして充分ですよ。

28129 赤伝入力したいのでしょうか 佐田 守弘 2004/11/06-10:23
記事番号28123へのコメント
悩めるオジンさん
これは赤伝入力したいという事でしょうか。
基本的には赤伝は数量をマイナス値で入力すれば済む話なのですが。
そのマイナス値を入力する代りに、入力後にコマンドボタンを押して、
マイナス値で入力するとか、あるいは入力前にコマンドボタンを押して
おいて、入力した値をマイナス値で入力させたいという意味でしょうか。
そうであれば分ります。
しかしもし、入力は何らかのジャーナルファイルに書き込み、
現在書き込んだ値を使って、マスタファイルにコマンドボタンの操作でプラス値に
書き込むか、マイナス値に書き込むかの操作をしたいのだとしたら、
大変に危険な方法になります(どちらを押したかの履歴を残せないので)

上記の部分について詳しく書かれていないので、的確なコメントにはなりませんが。

●入力後コマンドボタンでマイナス値に変更する
金額が項目計算式になっているのであれば、この値を修正することはできないので、
数量の方をマイナス値に変更します。
単に、項目値代入ないし行訂正コマンド(編集モードで使い分ける)で
 [数量]=-[数量]
とするだけです。

●予めコマンドボタンを押しておく
[赤伝入力]の様なコマンドボタンを作っておくのでしょうか。
これはコマンドボタンではなく、トグルボタンの様なもので作っておきます。
押込んであれば、ソース値の変数にオンの時に設定した値が代入されますから
この値を使って判定し、オン(押込んだ状態)の時には、上記と同様に数量を
マイナス値で書き込む処理をします。
赤伝状態を示すために、フォームの背景色を赤く変更するなどの工夫も大切でしょうね。

佐田守弘(KS-00119)
28131 Re:赤伝入力したいのでしょうか 悩めるオジン 2004/11/06-18:20
記事番号28129へのコメント
佐田先生及び諸先輩ありがとうございます

入力前にコマンドを押してからということなので
「赤伝入力」の仕様で考えてました。

>●予めコマンドボタンを押しておく
>[赤伝入力]の様なコマンドボタンを作っておくのでしょうか。
>これはコマンドボタンではなく、トグルボタンの様なもので作っておきます。
>押込んであれば、ソース値の変数にオンの時に設定した値が代入されますから
>この値を使って判定し、オン(押込んだ状態)の時には、上記と同様に数量を
>マイナス値で書き込む処理をします。
>赤伝状態を示すために、フォームの背景色を赤く変更するなどの工夫も大切
>でしょうね。

最初は、トグルボタンでの設定を考えていたのですが、
コマンドのボタンでの使用の際には、簡単に説明用のバルーンメッセージが表示されて
(使用バージョン9.0)、そのボタンを押す「注意」を促す意味で、
使用出来ればとの発想でした。
赤伝(マイナス処理)時には
フォーム上の表示様式も変更するようには設定しています。
誤入力を減らしたいのもありましたので。

28132 コマンドボタンでも不可能ではありませんが。 佐田 守弘 2004/11/06-22:50
記事番号28131へのコメント
悩めるオジンさん
表題の通りで赤伝入力の切り替えはコマンドボタンでも不可能ではありません。
但しトグルボタンの方が素直です。

もしコマンドボタンで行うには「取消」ないし「赤伝」と、「入力」ないし「通常」の
コマンドボタンが必要になります。
なぜかといえば、赤伝入力状態から通常の状態に戻すためのコマンドボタンが必要だから出す。
この意味で1つのボタンで処理できるトグルボタンの方が素直です。

●赤伝であるかどうかのフラグ
さて、コマンドボタンの場合でも考え方はトグルボタンと同じで、何かフラグとする変数、たとえば&赤伝などを用意します。
そして赤伝ボタンを押したら、この変数に1を代入し、通常伝票のボタンを押したら、0を代入する様にプログラムします。
トグルボタンはこの値の代入処理が自動でできる点が、コマンドボタンに比べて簡単になります。

●表示の変更
バルーン表示は、テキストオブジェクトで作り、通常は非表示としておくのが良いかと思います。
つまりオブジェクト属性の表示、非表示の切り替えで、画面上に表示したり消したりするわけです。

コマンドボタンの場合には、それらのボタンの押下で一般手続きを実行させるのが良いでしょう。
マウスダウンイベントでもマウス操作は行えますが、カーソルキーとEnterキーでも実行できる点では、
コマンドボタンの機能名で手続き実行を行う方が便利です。

トグルボタンの場合には、ボタンのソース値(例えば&赤伝)変更イベントでこれを行います。
ケースコマンドでソースの変数値が1になった場合と、0になった場合に
分けて表示をどうするかのコマンドを書けばでき上がりです。

佐田守弘(KS-00119)

戻る