3 返信 最新の回答 日時: Oct 19, 2009 7:59 PM ユーザー:syouzan

    オブジェクトやフィールドの塗りの色をスクリプトで制御したい

    syouzan

      タイトル

      オブジェクトやフィールドの塗りの色をスクリプトで制御したい

      フォーラムに投稿

      初めての投稿ですがよろしくお願いいたします。

      フィールドの色を、ボタンを押したら色が変わったり、

      レコードを選択すると指定した色に変わったりするようにしたいのですが、

      カスタム関数のヘルプなど見ても、解決法が分かりませんでした。

      どのようにしたら良いのか、ご教授お願いします。 

        • 1. Re: オブジェクトやフィールドの塗りの色をスクリプトで制御したい
          user6776
            

          >フィールドの色を、ボタンを押したら色が変わったり 

          透明なフィールドの後ろにオブジェクトフィールドを配置すれば可能かと。

          Ver9以降であれば条件付き書式で可能です。 

           

          >レコードを選択すると指定した色に変わったり 

          Ver10であれば、条件付き書式とスクリプトトリガーで可能。

          それ以前だとちょっと工夫が必要。 

          • 2. Re: オブジェクトやフィールドの塗りの色をスクリプトで制御したい
            syouzan
              

            さっそくの返信、ありがとうございます。

            条件付き書式の使い方が、これまでよく分からなかったのですが、

            とりあえず、グローバル変数、もしくは、フィールドの値を利用して、

            書式を変えることが出来ました。 感謝です。

             

            レコードを選択すると、色が変わるようにすることに関しては、

            まず、データベースで選択に使うフィールドとは別に、0か1を入れるようなフィールド「check」を準備し、

            スクリプトで、そのフィールドに1を入れるもの「Select」と、0を入れるもの「DeSelect」というふたつをつくってから、

            レイアウト上の、選択されるフィールドについては、「条件式書式」の「計算式」で、 「check」フィールドが1になるときに、

            塗りを変更するよう設定しました。

            そして、「レイアウト設定」の「スクリプトトリガ」で、

            「OnRecordLoad」に、「Select」スクリプトを、

            「OnRecordCommit」に、「DeSelect」スクリプトをそれぞれ設定し、動作させたところ、

            うまい具合に色が変わってくれました。

             

            フィールドの動作設定で、フィールドへの入力を禁止したまま変化させたかったので、直接フィールドのスクリプトトリガを使うことが出来ず、

            色々試しているうち、レイアウトのスクリプトトリガを使えることに気付き、何とかなった次第です。

            もしかしたら、もっと手っ取り早い方法があるかもしれませんが、もしありましたら、どうかご教授ください。

             

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

            • 3. Re: オブジェクトやフィールドの塗りの色をスクリプトで制御したい
              syouzan
                

              先に解決済みとしてしまいましたが、実際は解決していませんでした。

              上記のように設定して、一度選択した所をもう一度クリックすると、背景色が戻ってしまうことが判明しました。

              そこで、「DeSelect」というスクリプトは使わずに、「Select」のスクリプトを、

               

              フィールド内容の全置換[ダイアログなし; Choice::check; 0]

              フィールド設定[Choice::check; 1] 

               

              というように、とりあえず対象レコードのすべてのcheckフィールドを0に設定してから、再び、

              選択されたレコードのcheckフィールドを1にすることにより、正常な動作が実現しました。

              このスクリプトは「OnRecordLoad」に組み込み、それまで使っていた「OnRecordCommit」や「DeSelect」スクリプトは不使用としました。 

              前に比べてスクリプトがひとつ減ったので少しだけすっきりしましたが、やはり、ただ選択をするだけのことに、選択用のフィールドをつくり、

              スクリプトを使うのは、やっぱり非効率な気がします。

              条件付き書式の計算式をうまく使い、一発でリスト形式で選択されたレコードの背景色だけを変える、ということはできないものでしょうか。

              どうかご存知の方がいらっしゃいましたら教えてください。

              よろしくお願い致します。