過去の桐井戸端BBS (桐ver.8)
24670 ある項目にあるデータを入力したらある項目は入力できないように入力規則を設定したい 桐桐まい 2004/02/09-18:08
桐 ver8 sp6
表で作成致しました。

項目に
   [A]  [B]  [C]  [D]  [E]

項目[A]に例えば1と入力したら
項目[C]と[E]のみ入力ができるようにしたいのですが出来るのでしょうか?
[B]と[D]には入力できないようにしたいのです。

このような事が可能なのでしょうか?

桐できりきりまいの私です!(笑)
24672 Re:入力規則 しぼうかん 2004/02/09-19:53
記事番号24670へのコメント
こんばんは.桐桐まいさん。

表(テーブル)での入力制御の方法なのでしょうか?
テーブルの場合はわかりませんが、フォームでの入力ならこんなイベントで出来ると思います。

手続き定義開始 A::ソース値更新()
ケース開始
ケース([A]=1)
オブジェクト操作 @B.フォーカスの設定 = "禁止"
オブジェクト操作 @B.背景色="ねずみ色"
オブジェクト操作 @C.フォーカスの設定 = "自動"
オブジェクト操作 @C.背景色 ="黒"
オブジェクト操作 @D.フォーカスの設定 = "禁止"
オブジェクト操作 @D.背景色="ねずみ色"
オブジェクト操作 @E.フォーカスの設定 = "自動"
オブジェクト操作 @E.背景色 ="黒"
ケース その他
オブジェクト操作 @B.フォーカスの設定 = "自動"
オブジェクト操作 @B.背景色 ="黒"
オブジェクト操作 @D.フォーカスの設定 = "自動"
オブジェクト操作 @D.背景色 ="黒"
ケース終了
手続き定義終了

※1.イベントは入力後イベントでもいいです。
※2.オブジェクトのフォントが白、背景色が黒と仮定して設定しました。
※3.入力可能な項目と不可の項目を区別するために背景色も変えて見ました。
24675 Re:入力規則 悲しげ 2004/02/09-22:23
記事番号24672へのコメント
オブジェクト操作 @B.フォーカスの設定 = "禁止"
オブジェクト操作 @B.背景色="ねずみ色"
オブジェクト操作 @C.フォーカスの設定 = "自動"
オブジェクト操作 @C.背景色 ="黒"
・・・・・・・・
オブジェクト操作 @E.フォーカスの設定 = "自動"
オブジェクト操作 @E.背景色 ="黒"

ここは、好みによるかもしれませんが、以下のように1行で記述することもできます。
その方が微かに速いかも?

オブジェクト操作\
 @B{フォーカスの設定="禁止",背景色="ねずみ色"}\
 ,@C{フォーカスの設定="自動",背景色="黒"}\
  ・・・・・・・・・・・・
 ,@E{フォーカスの設定="自動",背景色="黒"}

24679 Re:入力規則 しぼうかん 2004/02/09-23:32
記事番号24675へのコメント
悲しげさんへ

ふむふむ、なるほどそんな方法があるんですか。


桐桐まいさんへ

[A]の入力前に[B]や[D]を入力してしまう可能性が有る場合は問題が発生してしまうので、
行挿入開始イベントや行訂正開始イベントに

オブジェクト操作\
 @B{フォーカスの設定="禁止",背景色="ねずみ色"}\
 ,@C{フォーカスの設定="禁止",背景色="ねずみ色"}\
  ・・・・・・・・・・・・
 ,@E{フォーカスの設定="禁止",背景色="ねずみ色"}

と書いて置く必要があるかもしれません。
24687 表だけで設定するなら行制約を使います 佐田 守弘 2004/02/10-02:31
記事番号24670へのコメント
桐桐まいさん
もし仮に表定義だけで行うとしたら、行制約式の設定で行います。
[B]の項目の行制約式には、以下の条件式を設定してみて下さい。
[A]=1 .and [B]=#未定義 .or[A]<>1
[D]についても同様です。

但し、行制約を設定した表編集では、[B]や[D]にもカーソルが移動し、
値の入力が一時的に行えます。そして、1行の入力が終った後で、
エラー判定がされて、入力した値にカーソルが戻されます。
但し、最終的に値が入力される事だけは防止されます。

最も好ましい方法は、両方を併用する方法です。
まず、表定義では上記のような行制約式を設定し、値が入力される事を禁止します。

また入力操作を良好にするためにはフォームを使い、入力禁止する項目に
フォーカス禁止ないし非表示にして入力させない様にして、
その場所に入力をさせない様にします。

●その他には
イベントを使って、ゴリゴリと禁止と強制書き換えを行う方法もあります。
[B]と[D]には、入力後イベントを使って、[A]が1であれば、未定義値以外を許可しない様にする。
[A]のソース値更新イベントを使って、[B]と[D]の値を強制的に未定義値に書き換える。

一般的には、行制約と入力時のフォーカス制御で間に合うはずです。

佐田守弘(KS-00119)


戻る