MsFlexGridのSortについて。

解決


ミカ  2007-08-22 03:04:20  No: 137216

VB6.0のMsFlexGridを使用して表を作っています。
その際にSortの使い方が理解できなかったので質問させてください。

---------------------------
 A | 111 | 333 | 222 | 
---------------------------
 B |  1  |  3  |  2  |
---------------------------

             ↓

---------------------------
 A | 111 | 222 | 333 | 
---------------------------
 B |  1  |  2  |  3  |
---------------------------
このようにしたいのですが、今の段階では↓のようになってしまいます。

---------------------------
 A | 111 | 333 | 222 | 
---------------------------
 B |  1  |  3  |  2  |
---------------------------

             ↓

---------------------------
 B |  1  |  3  |  2  |
---------------------------
 A | 111 | 333 | 222 | 
---------------------------
行内で昇順にソートしてほしいのですが、列内でソートしてしまうのです。

コードは以下の通りです。

-----------------------------------------
'選択範囲設定
grd.Col = 1
grd.ColSel = grd.Cols - 1

'昇順に並び替え
grd.Sort = 1
-----------------------------------------

grd.CellFontBold = True を使って選択されている範囲を確かめましたが、ここは問題なく1番上の行の数字の部分だけを選択されていました。

プロパティのSelectionModeとの兼ね合いも必要になってくるのでしょうか?

わかりにくい説明で申し訳ありませんが、よろしくお願いします。


大吉末吉  2007-08-22 22:35:53  No: 137217

VB6のヘルプで、「Sort プロパティ」 の解説を読んでみました。

#言い回しが分かり難く、最初に読んだ時意味を取り違えてしまいましたが・・・

要は「行の並び替え(上下を入れ替える)」為の機能で、
「行内の列を入れ替える(左右を入れ替える)」物じゃないですね。

以下、抜粋
------------------------------------------------
非固定型の行を並べ替えます。
並べ替えに使用されるキーは、Col および ColSel プロパティによって決定されます
------------------------------------------------

つまり、
> ---------------------------
>  B |  1  |  2  |  3  |
> ---------------------------
> このようにしたいのですが
は、できそうにありませんね。

> grd.Col = 1
> grd.ColSel = grd.Cols - 1

コレは、「ソート用のキー項目の指定」になります。
つまり、「1列目の値で比較して行を並び替える、1列目が同じなら2列目の値で比較・・・・『Cols-1』列目の値で並びかける」


ミカ  2007-08-23 00:47:33  No: 137218

>>大吉末吉さん

わかり易く説明できなくて申し訳ありませんでした。

行内での並び替えはできないんですね。
並び替えるプログラムを作ろうと思います。
勉強になりました、ありがとうございました。


ミカ  2007-08-23 01:21:28  No: 137219

スイマセン、解決を忘れていました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加