データクラスとコントロール間での値セット

データクラスから各コントロールに一度に値をセットすることができます。これにはset-values-to-contorlsプロシージャを利用します。下記の例では、Fooクラスから、フィールド名がコントロールのnameが一致するものへ値をセットしています。

set-values-to-controlsのset-value-proc引数は、nameが一致しない場合や、コントロールのvalueとデータクラスのフィールドの型が一致しない場合に、変換ロジックを記載できるものです。

        def tf1 = {TextField name=”tf-1″}
        def tf2 = {TextField name=”tf-2″}
        def tf3 = {TextField name=”tf-3″}
        def tf4 = {TextField}
        def tf5 = {TextField name=”no-name”}
        def tf6 = {TextField name=”tf-1″}

        def td = {TextDisplay name=”td”}
        def df = {DateField name=”df”}
        def cb = {CommandButton name=”cb”}
       
        def root-graphic =
            {VBox
                {HBox tf1, tf2, tf3}, {HBox td, tf4, tf5, tf6}, df, cb
            }
        || set values of graphic
        {set-values-to-controls
            {Foo},
            root-graphic,
            set-value-proc =
                {fn v, p, c =>
                    {if p.name == c.name then
                        {if-non-null value = {p.get-value v} then
                            set c.value-as-any =
                                {if p.type == int and c.value-type == String then
                                    (value * 3) & “”
                                 else
                                    value
                                }
                        }
                    }
                }
        }

逆に、Fooオブジェクトからコントロールへ値をセットするには、set-values-from-controlsを使用します。

パッケージ名:COM.CURLAP.LIB.UI