Thread Rating:
  • 389 Vote(s) - 2.92 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ヘッダーの結合はできない?
09-13-2013, 06:48 PM,
#2
RE: ヘッダーの結合はできない?
open controlのレコードグリッドのコードを眺めてみたのですが、
公式にはヘッダーを外部から変更する機能はなさそうな気がします。

グラフィックをたどるのがよさそうですが、ヘッダ周りはpackageで隠ぺいされてるものが多いので、
header-specで指定したグラフィックから親をたどる方法をためしてみました。

インスペクタでみたところ、header-specで指定したオブジェクトを格納しているHBoxがあり、
これの高さを0pxに設定すればヘッダ行が潰れるようです。

試しにさらに親のSkRGInnerRowまでたどって高さを0pxに設定してみたのですがこちらは効果が
ないように見えました。

実験したコードは下記の通りです。
非ローカルオプションをトリガにしているので、レコードセットを変更した際など、ヘッダが再生成された
場合は、一度falseに設定して再度trueに変更する必要がありますが・・・
Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

|| レコードグリッドのカラムヘッダの高さを0にする処理を呼び出すために非ローカルオプションを定義
{define-nonlocal-option public my-collapse-rg-header?:bool = false}    

|| 
{define-class public MyCollapseRgHeaderFrame {inherits Frame}
  {constructor {default ...}
    {construct-super
        {splice ...}
    }
  }
  || レコードグリッドのカラムヘッダの高さを0にする処理を呼び出すために非ローカルオプション
  {nonlocal-option public my-collapse-rg-header?:bool
    {if my-collapse-rg-header? then
        || 一つ上の階層のHBOXの高さを0pxに設定
        def pbox = self.parent
        set pbox.height = 0px
    }
  }
}

|| カラムヘッダの高さを0するためのカスタムRecordGridColumn
{define-class public MyRecordGridColumn {inherits RecordGridColumn}
  {constructor {default ...}
    {construct-super
        {splice ...},
        header-spec = {MyCollapseRgHeaderFrame}
    }
  }
}

{let rs:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField
                "id", caption = "User ID", domain = int,
                index-type = RecordFieldIndexType.unique
            },
            {RecordField "First", domain = String},
            {RecordField "Last", domain = String},
            {RecordField "City", domain = String},
            {RecordField "State", domain = String}
        },
        {RecordData id = 1, First = "Gene", Last = "Smith", City = "Boston", State = "MA"},
        {RecordData id = 2, First = "Fred", Last = "Smith", City = "Cambridge", State = "MA"}
    }
}

{let rg:RecordGrid =
    {RecordGrid
        record-source = rs,
        height = 10cm,
        width = 13cm,
        {RecordGridColumnGroup
            "id",
            || ヘッダーのセパレーターを削除します
            enclose-header-label? = false,
            {MyRecordGridColumn "id"}
        },
        {RecordGridColumnGroup
            "Name",
            || ヘッダーのセパレーターを削除します
            enclose-header-label? = false,
            {MyRecordGridColumn "First"},
            {MyRecordGridColumn "Last"}
        },
        {RecordGridColumnGroup
            "Address",
            || ヘッダーのセパレーターを削除します
            enclose-header-label? = false,
            {MyRecordGridColumn "City"},
            {MyRecordGridColumn "State"}
        }
    }
}

{value
    {VBox
        rg,
        {CommandButton
            label = "下段を潰す",
            {on Action do
                || 非ローカルオプションを設定
                set rg.my-collapse-rg-header? = true
            }
        }
    }
}
ご参考まで


Messages In This Thread
RE: ヘッダーの結合はできない? - by dyoshida - 09-13-2013, 06:48 PM
Forum Jump:


Users browsing this thread:
2 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('956')