[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/06/20(Mon) 13:51
投稿者名:おじん
Eメール:
URL :
タイトル:
ListViewで数値項目をソートしたい
エクスプローラ風のファイル詳細リストを表示しようとしています。
LiswViewが面白そうだったので使ってみようとしたのですが、問題発生。
Sortedプロパディで、項目の内容が数値(例:ファイルサイズ)の場合
表示が左詰になり(当然)、実数値の順になりません。擬右詰にしようと
しましたが、方法がわからず(Alignmentがない)、下記のように試みた
のですが、やはり左詰になり、だめです。
ListViewを使い、数値項目を実数値の順にソートする方法をご教授くだ
さい。説明内容が伝わりましたら、よろしくお願いいたします。

Private Sub AddFileList(FN As String)
'ファイルを1つ追加
    Dim LI As ListItem   'FN:ListBoxから取ったファイル名(パスなし)
                         'PT:ファイルのパス
    'ファイル名
    Set LI = ListView1.ListItems.Add(, , FN)
    'サイズ   
'こんなことやってみましたが、、、!!
'    LI.SubItems(1) = Right("          " & CStr(FileLen(PT + FN)), 8)
    LI.SubItems(1) = Format(FileLen(PT + FN), "#########0")
'これは、そのまんま!
'    LI.SubItems(1) = CStr(FileLen(PT + FN))
End Sub

ListViewのプロパティの設定は、Sorted=True;SortKey=1としています。

投稿時間:2005/06/20(Mon) 16:17
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ListViewで数値項目をソートしたい
前方に空白(スペース)を埋めて桁を揃えて表示して見てください。
(SampleNo=371)
itmX.SubItems(1) = Right$("          " & WSHFolder.GetDetailsOf(WSHFile, 1), 10)

* = スペース
*****1 KB
****10 KB
***100 KB

投稿時間:2005/06/20(Mon) 16:50
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^2: ListViewで数値項目をソートしたい
> 前方に空白(スペース)を埋めて桁を揃えて表示して見てください。
> (SampleNo=371)
> itmX.SubItems(1) = Right$("          " & WSHFolder.GetDetailsOf(WSHFile, 1
), 10)
>
いつものこと、ありがとうございます。
(おじさんの)例で、
LI.SubItems(1) = Right("          " & CStr(FileLen(PT + FN)), 8)
とやってはみていたのですが、空白のが数が不適切であるのか、また、
Right$ではなく、Right関数を使ったことなのか、
> * = スペース
> *****1 KB
> ****10 KB
> ***100 KB
のように「真っ直ぐ」に並ばなかったので(目で見て半文字分ぐらい
ずれて見える)。
十分な「スペース」をとり、やってみましたところ、「ソートは実数値
どおり」になりました。「文字のズレ」は調べてみます。まだ、おかし
なバグがあるのでしょう。
ありがとうございました。
追記:sampleがあったことを見つけることができませんでした(未掲載)。
もうしわけありません。

投稿時間:2005/06/20(Mon) 17:20
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^3: 文字のズレ解決しました
ListViewのフォントを、「MSPゴシック」から「MSゴシック」に
変えたら、数字は揃いました。
これまでフォントはあまり気にせずにやっていたのですが、こんな
ところに影響がでることを勉強しました。

投稿時間:2005/06/20(Mon) 23:05
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: ListViewで数値項目をソートしたい
 前にスペースを置くと、カラムの幅を狭くしたときに、見た目がよくないので
本格的に対応するなら、値でソートするサンプルがあります。

hhttp://vbnet.mvps.org/
 左のフレームで「Code Library」をクリック
 右のフレームのCodeの下「Common ctrls」をクリック
 CategoryでListViewの下から5番目「Sorting ListView ListItems Using Callbacks」をクリック

 又、項目を右に寄せるには、
     ListView1.ColumnHeaders(2).Alignment = lvwColumnRight

投稿時間:2005/06/21(Tue) 05:49
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^2: ListViewで数値項目をソートしたい
>  前にスペースを置くと、カラムの幅を狭くしたときに、見た目がよくないので
そうなんです。しかし、現段階ではおじんはこれでよしと!

> 本格的に対応するなら、値でソートするサンプルがあります。
>  hhttp://vbnet.mvps.org/
ちょっと前までは他も検索していたのですが、このごろは「ここ」しか
見ないようになりました。早速、参考にさせていただきます。

>  又、項目を右に寄せるには、
>      ListView1.ColumnHeaders(2).Alignment = lvwColumnRight
Alignmentはあるのですね。「試行錯誤」の努力が足りなかったようです。
ありがとうございました。