過去の桐井戸端BBS (桐ver.8)
8536 対象行の背景色の変更 尾形 2000/11/10-18:43
桐v8の一覧形式フォームについてです。
編集属性式を設定することで、一行おきに背景を指定して、帯状に出来ますよね。

ex.#条件選択(#MOD(#行番号,2)=1,"背景色'白百合色'")

条件式で、対象行の背景を赤にする、なんて事は無理でしょうか?

8537 Re:対象行の背景色の変更 HAS 2000/11/10-19:20
記事番号8536へのコメント
>条件式で、対象行の背景を赤にする、なんて事は無理でしょうか?

こんな感じですか。

#条件選択([属性]=1,"背景色'ラベンダー'",
     [属性]=2,"背景色'黄水仙'",
     [属性]=3,"背景色'海老茶色',文字色'白'",
     [属性]=4,"背景色'すみれ色',文字'白'",
     [属性]=5,"背景色'赤',文字色'白'")
8538 [属性]とは何ですか? 尾形 2000/11/10-20:23
記事番号8537へのコメント
HASさん、どうもありがとうございます。
ここに書いてある[属性]というのは項目ですか?

上手く伝わらなかったでしょうか。
一覧フォームを入力している状態で、処理対象行が1行目から、2行目に移動したら、
2行目の背景が赤になり、1行目の背景は元に戻る。
2行目から、3行目に移動したら、3行目の背景が赤になり、2行目の背景は元に戻る。
といった事が可能かなと思った次第です。

よろしくお願いします。

8542 Re:対象行の背景色の変更 森藤 2000/11/10-21:49
記事番号8536へのコメント
尾形さんこんばんわ
条件式ではないのですが、フォーム明細部のセクションに処理対象行文字色、処理対象行背景色というのがあります
選択項目色と反転色しか選べませんが。

オブジェクトの背景を継承か透明にしておいて明細部の背景色を水色にすると反転色のときに対象行は赤くなります。

背景が水色では...というときはwindowsの画面のプロパティで選択項目の色を赤にして
桐側で選択項目色を選べば赤くなります。
もちろんwindowsでのすべての選択状態で赤くなりますが。

それと反転色が黒の場合、対象項目がわからなくなります。

8548 対象行の背景色変更のイベント 佐田 守弘 2000/11/11-02:35
記事番号8536へのコメント
尾形さん
処理対象行の背景色の変更は、イベントを使って可能ではありますが、余りにオーバーヘッドが大きいので、
お薦めしたい方法ではありません。
参考までにその方法を紹介します。

●背景色の変更の方法
基本的には、#8537でHASさんが書かれている方法です。
ただし、[属性]の値をイベントを使ってダイナミックに変更します。
まず表を再定義して、[属性](整数型)を追加して下さい。
また、フォームのテキストオブジェクトの編集属性式には、
#条件選択([属性]=1,"背景色'赤',文字色'白'",1,"背景色'白',文字色'青'")
の様な式を設定して下さい(上記は色の一例です)。

●イベントハンドラ
次の通りです。
 手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
  置換 [属性]=0
  行訂正 [属性]=1
 手続き定義終了

 手続き定義開始 フォーム::レコード移動(長整数 &行番号,長整数 &総件数,長
整数 &明細番号)
  代入 &レコード位置=&行番号
  置換 [属性]=0
  ジャンプ 行番号=&レコード位置
  行訂正 [属性]=1
 手続き定義終了

●イベントの説明
フォームを開いたり、レコード移動を行ったら、全ての行の[属性]の値に0を書き込み、
次いで処理対象行のみ1を書き込むといった内容です。

●オーバーヘッド
このイベントが使えるのは、せいぜい行数が10行程度です。
なぜなら、レコード移動をする度に全行に渡って置換を行うからです。
100レコードを超えたら使い物にならないでしょう。
メイン&サブフォーム形式のサブフォームで、グループ選択が行われていて、
対象レコードが限られているケースであれば、可能かも知れません。

●「レコード移動前」イベントが必要ですね
もしレコード移動前イベントがあると、全行に渡っての項目置換は不用になります。
要らないと思っておりましたけど、意味があるイベントですね。
それ程難しい事ではないと思うので、桐ver.9での実現に期待します。

佐田守弘(KS-00119)

追伸
上記の他に、次の様な方法も考えられます。
[行番号]という項目を作り、フォーム開始イベント、グループ移動イベントなどで、#連番を使って値を置換します。
&行番号の値を別の変数に代入し、この値と[行番号]の値が同じなら表示色を赤にします。

8551 Re:対象行の背景色の変更 hidetake 2000/11/11-06:47
記事番号8536へのコメント
「レコード移動 」イベントで、明細番号取得して
method 戻り値=&Ret,@フォーム.明細番号取得(&明細番号)

「編集属性式」で #明細連番と &明細番号を比較して
一緒だったらどうするとかしては?
#cond(#明細連番=&明細番号,"背景モード'指定色',背景色'白百合色'")


8555 Re:対象行の背景色の変更 hidetake 2000/11/11-20:33
記事番号8551へのコメント
これって、分割数を越えた場合は巧くいかないのですね! (^_^ゞ
8556 Re:対象行の背景色の変更 hidetake 2000/11/11-22:34
記事番号8555へのコメント
「レコード移動」イベントで、その行の行番号を取得しておき
&行番号=#行番号

「編集属性式」で #行番号と &行番号を比較して
一緒だったらどうするとかしては?
#cond(#行番号=&行番号,"背景モード'指定色',背景色'赤'")

そして、フォーム明細部セクションの処理対象行文字色を
選択項目文字色とでもしておいた方が良いかも知れません。


8558 Re:対象行の背景色の変更 尾形 2000/11/12-07:54
記事番号8556へのコメント
みなさん、どうもです。
hidetakeさんの最初のヒントを参考に、自分でも
>#cond(#行番号=&行番号,"背景モード'指定色',背景色'赤'")
これの方がいいかなぁと思いながら、やっている
ところでした。どうも、ありがとうございます。

やっぱり、やり方はいろいろありますね。


8650 Re:出来ました HAS 2000/11/16-19:15
記事番号8556へのコメント
>「レコード移動」イベントで、その行の行番号を取得しておき
>&行番号=#行番号
>
>「編集属性式」で #行番号と &行番号を比較して
>一緒だったらどうするとかしては?
>#cond(#行番号=&行番号,"背景モード'指定色',背景色'赤'")
>

初めてイベント処理に挑戦しました。
変数の取り扱いに自信がありませんが、以下の設定で出来るようです。


 編集属性式

  #条件選択(&行番=#行番号,"背景色'赤',文字色'白'")


 イベント処理

  メイン

   名札 メイン
   変数宣言 局所,長整数{&行番}
   *

  フォーム

  手続き定義開始 フォーム::レコード移動(長整数 &行番号,長整数
   &総件数,長整数 &明細番号)
  &行番=&行番号
  メソッド呼び出し @フォーム明細部.再描画(1)
  手続き定義終了


戻る