過去の桐井戸端BBS (桐ver.9)
24170 フォーム(一覧表)にて項目の値によりフォーカスの設定を制御したい 小川 伸二 2004/01/06-14:13
こんちは、前にもお世話になった小川と申します。
過去ログを探したのですが、項目の値により
フォントの色などを変えるというのはあったのですが、
フォーカス設定を制御する編集属性式が見つけれなかったので
質問させていただきます。

あるTBL(発注データ送信.TBL)に[社名]、[FAX番号]、[メールアドレス]、
[FAX送信する]、[メール送信する]
の5つの項目があり、[FAX番号]と[メールアドレス]は
取引先マスタからの表引き項目計算式になっております。

フォームでは[FAX送信する]と[メール送信する]はチェックボックスで"する""しない"にしています。

この時、[FAX番号]に値があれば[FAX送信する]にチェックON,OFFを許可しますが、
値がないときにはフォーカス設定を使用付加表示としてグレーにして入力不可としたいのです。
([メール送信する]も同じ感じです)


そもそもフォーム定義のチェックボックスのプロパティでは
編集属性式が使えないので無理なのでしょうか?
イベントともと思ったのですが、カード形式ならできそうだけど
一覧表形式で複数レコード表示されている場合はどうするのか
皆目判りません。。。


どうぞよろしくお願いいたします。


桐9-2004、WinXP PRO です。

24171 Re:編集属性式でフォーカスの設定を制御したい 悲しげ 2004/01/06-15:41
記事番号24170へのコメント
どもっ、小川さん
「編集属性式」で出てくる「オブジェクト属性」のリスト上に存在しないので、
「フォーカスの設定」は編集属性式では指定できないようです。
従って「フォーカスの設定」は「オブジェクト操作」コマンドを使うしかないことになります。
このコマンドをどの「イベント」で実行させるかは、
どのようなタイミングでフォーカス設定を変更したいのかによるでしょう。

24172 Re:編集属性式でフォーカスの設定を制御したい 小川 伸二 2004/01/06-16:51
記事番号24171へのコメント
悲しげさん、ありがとうございます。

編集属性式では無理ですか・・・
イベントのタイミングですが、一覧表なので
表示されている行(レコード)はそれぞれの値により
表示不可、許可が設定されていて、
スクロールされれば新たに見えてきた行も値により表示不可、許可が設定されて見えたいです。

なんだか難しそうですね・・・

24175 Re:フォーム(一覧表)にて項目の値によりフォーカスの設定を制御したい 今村 誠 2004/01/06-17:22
記事番号24170へのコメント
小川 伸二さんこんにちは
>フォームでは[FAX送信する]と[メール送信する]はチェックボックスで
>"する""しない"にしています。

>この時、[FAX番号]に値があれば[FAX送信する]にチェックON,OFFを
>許可しますが、値がないときにはフォーカス設定を使用付加表示として
>グレーにして入力不可としたいのです。
>([メール送信する]も同じ感じです)
コマンドボタンでチェックして実行条件にした方がいいのではないでしょうか
試していませんがボタンの文字を「レ」等にするといいと思います。
24176 Re:単に入力できないようにするのならば ONnoji 2004/01/06-17:24
記事番号24170へのコメント
小川 伸二さん、こんにちは。

表形式のフォーム等で、各行毎にチェックボックスを使用不可表示にするのは難しそうですね。

単に入力できないようにするのならば…
チェックボックスのフォーカスを禁止して、
このオブジェクトの上に透明なコマンドボタンを配置すると、
入力の制限は可能だと思います。

例えば…

手続き定義開始 cmdFaxClick( )
 変数宣言 自動,整数{ &mode, &return }
 メソッド呼び出し 戻り値 = &return, @フォーム.更新モード取得( &mode )
 
 if ( .not &mode )
  行訂正 [FAX送信する] = .not [FAX送信する]
 else
  項目値代入  [FAX送信する] = .not [FAX送信する]
 end
 
手続き定義終了

*フォームは半角カナです。
* [FAX送信する]は整数型の項目

また、重ねるコマンドボタンに次のような編集属性式を付けるとことも考えられます。

#cond( [FAX番号], "背景モード'透明'", 1 , "背景モード'指定色',背景色'パールグレイ'")

外していると思いますが…(^^ゞ


24178 Re:フォーム(一覧表)にて項目の値によりフォーカスの設定を制御したい 今村 誠 2004/01/06-19:04
記事番号24175へのコメント
実験してみました
ボタンの標題を「レ」半角で
→機能     パラメーター
1実行条件  [FAX番号]<>""
2シェル実行  "送信コマンド"

編集属性式に
#cond([FAX番号]<>"","前景モード'指定色'前景色'黒'")

フォントタブの文字色を
指定色で灰色に
背景色も灰色に

欠点はボタンが押せてしまうこと

24179 Re:編集属性式でフォーカスの設定を制御したい 悲しげ 2004/01/06-20:26
記事番号24172へのコメント
試してませんが(^^;)
もしも#24171の線でやるとすればこんな感じかも。

編集属性式でもって、背景色と前景色をうまいこと変えて、何とか
フォーカス不可ふうな雰囲気をかもしだすようにしてみる。(^^;)
その上で、イベントとしては「レコード移動」ハンドラで
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
手続き定義開始 フォーム::レコード移動(長整数 &行番号,・・・・
 if(なんとか=かんとか)
  オブジェクト操作 @tなんとか.フォーカスの設定="禁止"
 else
  オブジェクト操作 @tなんとか.フォーカスの設定="自動"
 end
手続き定義終了
*(註)本当は半角カナ有りです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
かなり苦しいです。(^^;)

24187 誤入力防止 尾形 2004/01/07-07:59
記事番号24170へのコメント
>この時、[FAX番号]に値があれば[FAX送信する]にチェックON,OFFを
>許可しますが、値がないときにはフォーカス設定を使用付加表示として
>グレーにして入力不可としたいのです。
>([メール送信する]も同じ感じです)
たんに誤入力を防止したいという事であれば
[FAX送信する]のソース値更新イベントあたりで

ケース開始
 ケース ([FAX送信する]=1 .and [FAX番号]="")
  メッセージボックス "入力エラー","fax番号が未登録ですよ",・・・
  項目値代入 [FAX送信する]=""
  手続き終了
ケース終了

こんな感じでどうですかね

24196 Re:ありがとうございました 小川 伸二 2004/01/07-13:11
記事番号24170へのコメント
悲しげさん、今村さん、ONnojiさん、尾形さん
ご回答ありがとうございました。

みなさまのお知恵をお借りしてなんとか希望するものができました。
格好のいいものではありませんが結果をUPしておきました。

本当にありがとうございました。

戻る