Thread Rating:
  • 315 Vote(s) - 2.85 Average
  • 1
  • 2
  • 3
  • 4
  • 5
段組テーブルのヘッダー
07-05-2013, 06:47 PM,
#3
RE: 段組テーブルのヘッダー
>単純にヘッダ行もデータ行と同じTableに入れれば、列そろえのレイアウトは簡単になりそうです

まさにここの点に頭を悩ませていました。

RecordGridは、同じScrollBoxに入っているので
横スクロールは当然問題なく、
縦スクロールは、ヘッダーはそのまま、レコード部のみがスクロールするようになっています。
このレイアウトを実現したかったのです。

レコード部分とヘッダーをそれぞれ個別のScrollBoxにいれ、
ヘッダーにはスクロールバーを表示させず、
レコード部分の横スクロールと連動するようにすると、
ヘッダー部の右側にスクロールバーを表示しないぶんのスペースができてしまい、
境界線の設定が複雑になるという問題と、
スペースの幅を固定値で持たせているため、スクロールバーのUIが変わったときに対応できない
という問題がありました。

Grid クラスを利用すれば実現できました。

Code:
{define-class public DangumiLayout {inherits Table}
  {constructor public {default
                          a:any,
                          b:any,
                          c:any,
                          d:any,
                          e:any,
                          f:any,
                          ...
                      }
    {construct-super
        columns = 5,
        border-width=1pt, border-color="black",
        cell-border-width=1pt, cell-border-color="black",
        background="#b0ffff",
        {splice ...}
    }
    {self.add  row = 0, column = 0, colspan = 1,{Frame width =1in, a}}
    {self.add  row = 0, column = 1, colspan = 3, {Frame width =2in, b}}
    {self.add  row = 0, column = 4, colspan = 1, rowspan = 2,  {Frame width =2in, c}}
    {self.add  row = 1, column = 0,  {Frame width =1in, d}}
    {self.add  row = 1, column = 1, {Frame width =1in, e}}
    {self.add  row = 1, column = 2,  {Frame width =1in, f}}
  }
}

{value
    def vb = {VBox}
    {for i:int = 0 to 10 do
        {vb.add
            {DangumiLayout {CommandButton}, {DateField} ,{TextArea}, {TextField}, {RadioFrame {HBox {RadioButton}, {RadioButton}}},{CheckButton}}
        }
    }
    def main =
        {ScrollBox  vb}
    def header-content =
        {DangumiLayout
            height= 40pt,
            background = "lightgreen",
            "ボタン", "日付", "備考", "コード" , "選択", "チェック"
        }
    def header =
        {ScrollBox
            height = header-content.height,
            always-disable-hscroll? = true,
            always-disable-vscroll? = true,
            header-content
        }
    def header-hscroll = {header.get-hscroll}
    def main-hscroll = {main.get-hscroll}
    def main-vscroll = {main.get-vscroll}

    {main-hscroll.add-event-handler
        {on e:Adjustment at s:Scrollbar do
            {header-hscroll.set-scroll-value {s.get-scroll-value}}
        }
    }
    let my-grid:Grid =
        {Grid
            border-width = 1pt,
            border-color = "gray",
            width = 5in,
            height = 5in
        }

    {my-grid.add
        {VBox header, main},
        bottom = {my-grid.vorigin-fiducial},
        right = {my-grid.horigin-fiducial},
        top = {my-grid.top},
        left = {my-grid.left}
    }
    {my-grid.add
        main-vscroll ,
        bottom = {my-grid.vorigin-fiducial},
        left = {my-grid.horigin-fiducial},
        top = {my-grid.top},
        right = {my-grid.right}
    }
    {my-grid.add
        main-hscroll,
        top = {my-grid.vorigin-fiducial},
        right = {my-grid.horigin-fiducial},
        bottom = {my-grid.bottom},
        left = {my-grid.left}
    }
    my-grid
}
Reply


Messages In This Thread
段組テーブルのヘッダー - by umemura - 07-02-2013, 05:42 PM
RE: 段組テーブルのヘッダー - by umemura - 07-05-2013, 06:47 PM
Forum Jump:


Users browsing this thread:
1 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('929')