過去の桐井戸端BBS (桐ver.8)
17410 イベント実行済みかどうかわかるように実行時にコマンドボタンの色を変更したい 伊藤 文章 2002/10/02-10:09
絞り込み 行数=1
表 ”材料在庫.TBL”
併合 条件名=材料入荷
終了 表 編集対象表
絞り込み解除 *


多少の履歴以外は会話処理ばかりで済ませてきておりましたが初めてイベントに挑戦しました結果
一応希望した結果が得られました
しかしイベント実行済みかどうかがすぐに分かるように実行時にコマンドボタンの色を変更したいのですが
どうしたらよろしいでしょうか?
17424 Re:在庫管理のイベント 宮城 2002/10/02-21:07
記事番号17411へのコメント
伊藤 文章さん、こんばんは。

単純に考え方だけでいうと、イベント実施判定用の変数を決めておき、
「1」か「0」かとか「操作」都度変数値を書き換え、この変数の値にはよりボタンの背景色を変えるよう、
表示属性を変えればいいと思うのですが・・・。

問題はどんな「操作」がありえるかです。

1行行追加し、併合。1行行追加し併合。
すべてがすべてこのパターンしかないならいいのですが、そんなことはほぼあり得ないと思います。

1行行追加。あら、併合忘れて次にもう1行追加しちゃった・・・。あ
るいは併合に失敗しちゃった、併合に成功してるのにもう一回さらに併合しちゃった、などなど。

と、いうことで、変数ではなく、併合実施判定用項目を持たせ、
当該レコード併合済を確認してから値を変え、この値に基づき表示属性を変えるということになろうかと思います。

ただ、表示属性を変えたいということに絞ってなら次などご参考になりませんでしょうか。

http://www.fuku3.com/~habata/kbbs/kakov8/03575.htm
17425 Re:在庫管理のイベント 幅田 2002/10/02-22:29
記事番号17411へのコメント
伊藤文章さん
こんにちは。

>しかしイベント実行済みかどうかが
>すぐに分かるように実行時にコマンドボタン
>の色を変更したいのですがどうしたら
>よろしいでしょうか?

コマンドボタンの色を変えるのはいいのですが、
変わったままではなく、処理の実行後には
元に戻したほうがいいですよね。

まず、そのコマンドボタンの通常の色(青など)を
オブジェクトの属性→背景→指定色で設定しておきます。
そこで、イベントのプログラムの前後に
オブジェクトの色を変えるコマンドを記述します。
(そのコマンドボタンのオブジェクト名は
仮に「コマンドボタン」としておきます。

**
オブジェクト操作 @コマンドボタン.背景色="赤"

絞り込み 行数=1
表 ”材料在庫.TBL”
併合 条件名=材料入荷
終了 表 編集対象表
絞り込み解除 *

オブジェクト操作 @コマンドボタン.背景色="青"
**


コマンドボタンが押され、プログラム実行前に
@コマンドボタンというオブジェクトの背景色を赤に変え、
終了したら、青に戻します。

17430 Re:在庫管理のイベント 伊藤 文章 2002/10/03-09:16
記事番号17425へのコメント
幅田さん

回答ありがとうございます。
しかし記述方法が悪いのでしょうか
コマンドボタンの色は灰色のまま
赤にも青にも変わってくれません
17431 Re:在庫管理のイベント 幅田 2002/10/03-09:45
記事番号17430へのコメント
伊藤 文章さん
こんにちは。

>しかし記述方法が悪いのでしょうか
>コマンドボタンの色は灰色のまま
>赤にも青にも変わってくれません

そのままでは変わってくれないと思います。
No.17425で書いたように
>まず、そのコマンドボタンの通常の色(青など)を
>オブジェクトの属性→背景→指定色で設定しておきます。
をやらないと変わってくれません。
背景タブの背景色モードを「指定色」にしておくということがポイントのようです。


17432 Re:在庫管理のイベント 伊藤 文章 2002/10/03-11:07
記事番号17431へのコメント
幅田さん

>背景タブの背景色モードを「指定色」にしておくということが
>ポイントのようです。
>
申し訳ありませんでした
とにかく今までは会話処理しかしてこなかったため
記入されていても何を記入しているのか分からないことは読み飛ばしておりました
背景色を指定色に指定してやっとコマンドボタンの色は変わってくれましたがフォーム内のレコードで
併合を実行したかどうかの区別の為に色を変えたかったのですがフォーム内の全てのコマンドボタンの色が
変わってしまい色を変更する意味がなくなってしまいました

17433 Re:在庫管理のイベント 伊藤 文章 2002/10/03-13:11
記事番号17424へのコメント
宮城さん

>
>1行行追加し、併合。1行行追加し併合。すべてがすべてこのパターン
>しかないならいいのですが、そんなことはほぼあり得ないと思います。

本当はこれをしたいのですが、1行追加して併合の前に
表示モードにしないと併合ができないのです。
イベントのコマンドに表示モードにするコマンドはない様でしたので
この方法はあきらめました。

>1行行追加。あら、併合忘れて次にもう1行追加しちゃった・・・。あ
>るいは併合に失敗しちゃった、併合に成功してるのにもう一回さらに併
>合しちゃった、などなど。

この問題の解決策として併合した行のコマンドボタンの色を変更して
併合済みかどうかの判断をしようと考えたのです。

17440 Re:在庫管理のイベント 幅田 2002/10/03-22:18
記事番号17433へのコメント
伊藤 文章さん
こんにちは。
何か私のほうが勘違いしていたようです。

>併合を実行したかどうかの区別の為に色を変えたかったのですが
>フォーム内の全てのコマンドボタンの色が変わってしまい
>色を変更する意味がなくなってしまいました

>>1行行追加。あら、併合忘れて次にもう1行追加しちゃった・・・。あ
>>るいは併合に失敗しちゃった、併合に成功してるのにもう一回さらに併
>>合しちゃった、などなど。

>この問題の解決策として併合した行のコマンドボタンの色を
>変更して併合済みかどうかの判断をしようと考えたのです。

てっきりコマンドボタンを押して処理の実行中だけボタンの色を変えたいのかと思っていましたが、
その処理(併合)を実行したレコードの時だけ、コマンドボタンの色を変えたいということでいいのですね。

ならば、やはり宮城さんの言われるとおり、

>併合実施判定用項目を持たせ、当該レコード併合済を確認してから
>値を変え、この値に基づき表示属性を変えるということになろうか
>と思います。

ということだと思います。

表示属性を変えることについては、ちょうどこのツリーの上にある
No.17414のツリーの中のNo.17422に同じような話題があります。

判定用の項目の項目名を仮に[判定]として
コマンドボタンの「オブジェクトの属性」の「表示」タブの右下にある
「編集属性式」の設定欄に

#条件選択([判定]=1,”背景色’赤”,[判定]=0,”背景色’青”)

の式を書いておけば、
[判定]の項目が1のレコードでは赤、0のときは青という風に
コマンドボタンの色を変えることができます。

>>1行行追加し、併合。1行行追加し併合。すべてがすべてこのパターン
>>しかないならいいのですが、そんなことはほぼあり得ないと思います。
>本当はこれをしたいのですが、1行追加して併合の前に
>表示モードにしないと併合ができないのです。
>イベントのコマンドに表示モードにするコマンドはない様でしたので
>この方法はあきらめました。

実はここんとこの意味は私にはよくわからないのですが、
イベントで表示モードにするには

メソッド呼び出し @フォーム.更新モード設定(0)

というコマンドがありますし、

コマンドボタンの機能名で、「表示」

と書くことによっても表示モードにすることもできますが・・

17448 Re:在庫管理のイベント 伊藤 文章 2002/10/04-11:56
記事番号17440へのコメント
幅田さん

>何か私のほうが勘違いしていたようです。

逆に私の説明不足(うまく説明できない)だと思います。


>>併合実施判定用項目を持たせ、当該レコード併合済を確認してから
>>値を変え、この値に基づき表示属性を変えるということになろうか
>>と思います。


結局この方法を採るべきなのでしょうが、情けないことに
併合済みを確認して、判定項目の値を変更する方法が分からないのです。


>実はここんとこの意味は私にはよくわからないのですが、
>イベントで表示モードにするには

>メソッド呼び出し @フォーム.更新モード設定(0)

>というコマンドがありますし、

このコマンドは
 KU1070指定されたメソッドは存在しません
 更新モード設定
とエラーになりました。
コマンドボタンでなくオブジェクトからイベントを起こさせたからでしょうか?

17454 Re:在庫管理のイベント 伊藤 文章 2002/10/07-13:17
記事番号17448へのコメント
>イベントで表示モードにするには
>
>メソッド呼び出し @フォーム.更新モード設定(0)
>
>というコマンドがありますし、

イベントは初めてなのに、マニュアルも見ず(というより
ハードディスクがクラッシュした後ダウンロードをしてなかった。)
おかしな事ばかり投稿してしまい、すみません。
今日やっとマニュアルをダウンロードして、確認してみると
「入力後」のイベントでは使用できないコマンドとありました。
ですからエラーが出て当たり前なのに、それさえ分かっていませんでした

結局
1行のデータを入力後、次の行の入力に移るタイミングで
一度表示モードにし、元のイベントを発生させ、行挿入モードにもどす。

これがどうすればできるか教えていただけないでしょうか?


17479 更新モードの変更イベント 佐田 守弘 2002/10/09-00:41
記事番号17454へのコメント
伊藤 文章さん
まず、#17448へのコメントです。
「メソッド呼び出し @フォーム.更新モード設定(0)」
の「フォーム」は、半角文字で
 メソッド呼び出し @フォーム.更新モード設定(0)
と書かれてますでしょうか。全角ではエラーになるはずです。

次に#17454へのコメントです。
この場合には、レコード移動イベントを使って下さい。

手続き定義開始 フォーム::レコード移動(<自動変数宣言のパラメータ省略>)
 メソッド呼び出し @フォーム.更新モード設定(0)
 併合 <併合の内容>
 メソッド呼び出し @フォーム.更新モード設定(4)
手続き定義終了

●疑問
質問内容に対するコメントは上記の通りなのですが、1レコード追加する度に
併合をする理由が良く分からないのですが。
ワークファイルの上で入力し、入力が終わったらマスタファイルに
トランザクション処理を行う様な事を考えておられるのでしょうか。

佐田守弘(KS-00119)
17486 Re:更新モードの変更イベント 伊藤 文章 2002/10/09-09:47
記事番号17479へのコメント
佐田 守弘さん

>「メソッド呼び出し @フォーム.更新モード設定(0)」
>の「フォーム」は、半角文字で
> メソッド呼び出し @フォーム.更新モード設定(0)
>と書かれてますでしょうか。全角ではエラーになるはずです。

全角でのエラーメッセージですか。
入力後イベントでは使用できない事から発生する
エラーメッセージと理解しておりました。

>次に#17454へのコメントです。
>この場合には、レコード移動イベントを使って下さい。
>
>手続き定義開始 フォーム::レコード移動(<自動変数宣言のパラメータ省略>)
> メソッド呼び出し @フォーム.更新モード設定(0)
> 併合 <併合の内容>
> メソッド呼び出し @フォーム.更新モード設定(4)
>手続き定義終了

ありがとうございます
やっとほぼ希望通りの事ができる様になりました。
(たった一つ入力終了後表示モードにする時終端行エラーが一瞬表示される。)

>●疑問
>質問内容に対するコメントは上記の通りなのですが、1レコード追加する
>度に併合をする理由が良く分からないのですが。
>ワークファイルの上で入力し、入力が終わったらマスタファイルに
>トランザクション処理を行う様な事を考えておられるのでしょうか。

入力ミスを防止する為には本当はこうするべきなのでしょうが
会話処理しかしたことのない私には、考えもつきませんでした
在庫処理で入荷(出荷)入力時併合処理を忘れる事を防止する為に

1レコード入力度併合する
それができなければ併合済みのレコードを
明確に区別できる様に色を変える。
 
という方法しか考えつかなかったのです。

戻る