MSFlexGridのソートに関してです。
以下の質問と同じだと思うのですが、どうしても上手く動作しません。
よろしくお願いします。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200311/03110038.txt
期待の動作は、例えば3列目の昇順ソートをかけたとき
3>1>2>4 の順で並び替えを行いたいです。
Dim i As Integer
Dim intCol As Integer
Dim intSort As Integer
' 合計4列 ソート対象項目をチェックボタン形式で選択
For i = 0 To 3
If chkCol(i).Value = True Then
intCol = i + 1
Exit For
End If
Next i
' 昇順か降順を選択
For i = 0 To 1
If chkSort(i).Value = True Then
intSort = i + 1
Exit For
End If
Next i
' 一列目は日時なため一般的なソートではなく文字列ソートに変換
If intCol = 1 And intSort = flexSortGenericAscending Then intSort = flexSortStringAscending
If intCol = 1 And intSort = flexSortGenericDescending Then intSort = flexSortStringDescending
With grdLogDisp
.Col = 1
.ColSel = intCol + 1
.Sort = intSort
.Row = 1
.Col = 1
.TopRow = 1
End With
>3>1>2>4 の順で並び替えを行いたいです。
MSFlexGrid では上記のようなソートはできません。
どうしてもなら、一旦 >3>1>2>4 のように列を挿入して
並び替えるキーをその列にコピーしてからソート後、挿入した列を
削除するようにして下さい。
http://www.bcap.co.jp/hanafusa/VBHLP/Sampleitiran.htm
No.365 参照
>>3>1>2>4 の順で並び替えを行いたいです。
>MSFlexGrid では上記のようなソートはできません。
上記を訂正させて頂きます。
カスタムソートをすればできますが、私の過去のテスト結果では
列を一時挿入してソートする方が処理速度が速かったので、前記の
方法を提案しました。
http://www.bcap.co.jp/hanafusa/logbbs/wforum.cgi?mode=allread&no=6818
返答遅れてもうしわけありません。
今、私が扱っているものはデータの量が多くないので
>並び替えるキーをその列にコピーしてからソート後、挿入した列を
>削除するようにして下さい。
こちらの方法を取らせて頂きました。
花ちゃんさんアドバイスありがとうございました。
ツイート | ![]() |