Thread Rating:
  • 317 Vote(s) - 2.83 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RecordGrid指定列のドラッグ不可
06-02-2014, 06:14 PM, (This post was last modified: 06-02-2014, 06:15 PM by rom.)
#1
RecordGrid指定列のドラッグ不可
こんにちはー!

RecordGridの特定の列のみに対する制御の質問です。



ID列を左側から動かせないようにして
残りの列はドラッグして列を変更出来る様にすることが出来ません・・・

column-movable? だと列を全て動かせるか動かせないかの2択なので

指定列のみ・・・というような動作をさせたいです


且つ、ID列は固定列ということで幅の設定も出来ないようにしたいです。。。

ご教授お願いいたします。

Code:
{let rec_set:RecordSet=
    {RecordSet
        {RecordFields
             {RecordField "id"   ,domain = int,caption="ID"}
            ,{RecordField "name"   ,domain = String,caption="名前"}
            ,{RecordField "age"   ,domain = String,caption="年齢"}
            ,{RecordField "sex"   ,domain = String,caption="性別"}
        }
        ,{RecordData id=1,name="一郎",age="20才",sex="男"}
        ,{RecordData id=2,name="花子",age="18才",sex="女"}
        ,{RecordData id=3,name="次郎",age="16才",sex="男"}
        ,{RecordData id=4,name="良子",age="14才",sex="女"}
        ,{RecordData id=5,name="三郎",age="12才",sex="男"}
    }
}

{let RG:RecordGrid={RecordGrid record-source=rec_set}}
{RG.set-frozen-region 0,1}
{value RG}
06-02-2014, 06:31 PM, (This post was last modified: 06-02-2014, 06:33 PM by dyoshida.)
#2
RE: RecordGrid指定列のドラッグ不可
Romさん こんにちは

列を固定するのにcolumn-movable?を使うというのはあってると思いますよ。
「指定列のみ」という設定を行う場合は、RecordGridColumnに対して設定することになるかと。

幅を固定する場合は、column-resizable?オプションがあります。

こんな感じで。
ただ、これではまだ他の列をドラッグしてID列の前にもってこれるのが難点ですね・・・
Code:
{let rec_set:RecordSet=
    {RecordSet
        {RecordFields
            {RecordField "id"   ,domain = int,caption="ID"}
            ,{RecordField "name"   ,domain = String,caption="名前"}
            ,{RecordField "age"   ,domain = String,caption="年齢"}
            ,{RecordField "sex"   ,domain = String,caption="性別"}
        }
        ,{RecordData id=1,name="一郎",age="20才",sex="男"}
        ,{RecordData id=2,name="花子",age="18才",sex="女"}
        ,{RecordData id=3,name="次郎",age="16才",sex="男"}
        ,{RecordData id=4,name="良子",age="14才",sex="女"}
        ,{RecordData id=5,name="三郎",age="12才",sex="男"}
    }
}

{let RG:RecordGrid={RecordGrid
                       record-source=rec_set,
                       {RecordGridColumn
                           "id",
                           column-movable? = false,
                           column-resizable?  = false
                       }
                   }
}
{RG.set-frozen-region 0,1}
{value RG}
06-03-2014, 09:18 AM,
#3
RE: RecordGrid指定列のドラッグ不可
>dyoshidaさん

早めの回答有難うございます!

RecordGridColumnに対して設定すれば簡単にできるんですね!



しかしID列の前に持ってこれてしまうのが確かに難点ですね・・・
06-04-2014, 06:19 PM,
#4
RE: RecordGrid指定列のドラッグ不可
抜け道がありそうですが・・・。

Code:
||先頭でポジションを保持するカラム
{define-class public CustomRecordGridColumn {inherits RecordGridColumn}
  field public position-fix?:bool
  {constructor public {default
                          position-fix?:bool = false,
                          ...
                      }
    set self.position-fix? = position-fix?
    {construct-super {splice ...}}
  }
}

||CustomRecordGridColumn に位置を保持させるグリッド
{define-class public CustomRecordGrid {inherits RecordGrid}
  {constructor public {default
                          ...
                      }
    {construct-super {splice ...}}
  }

  {method public {move-column
                     source-index:int,
                     destination-index:int
                 }:void
    ||移動先のカラムが CustomRecordGridColumn.position-fix?=true なら
    ||カラムの移動自体をキャンセルする
    {if destination-index < self.columns.size - 1 then
        {type-switch self.columns[destination-index]
         case crgc:CustomRecordGridColumn do
            {if crgc.position-fix? then {return }}
        }
    }
    {super.move-column source-index, destination-index}
  }
}

{let rec_set:RecordSet=
    {RecordSet
        {RecordFields
            {RecordField "id"   ,domain = int,caption="ID"}
            ,{RecordField "name"   ,domain = String,caption="名前"}
            ,{RecordField "age"   ,domain = String,caption="年齢"}
            ,{RecordField "sex"   ,domain = String,caption="性別"}
        }
        ,{RecordData id=1,name="一郎",age="20才",sex="男"}
        ,{RecordData id=2,name="花子",age="18才",sex="女"}
        ,{RecordData id=3,name="次郎",age="16才",sex="男"}
        ,{RecordData id=4,name="良子",age="14才",sex="女"}
        ,{RecordData id=5,name="三郎",age="12才",sex="男"}
    }
}

{let RG:CustomRecordGrid=
    {CustomRecordGrid
        record-source=rec_set,
        {CustomRecordGridColumn
            "id",
            column-movable? = false,
            column-resizable?  = false
            ,position-fix? = true
        }
    }
}
{RG.set-frozen-region 0,1}
{value RG}
06-05-2014, 01:24 PM,
#5
RE: RecordGrid指定列のドラッグ不可
> umemuraさん

ありがとうございます!
思い通りの操作に出来てとてもうれしいです!

今後ともご指導宜しくお願いします!



抜け道というのが気になります。。。!

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('1090')