tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル【VB6】LISTViewでのマウスドラックで項目並替え
記事No12697
投稿日: 2008/07/04(Fri) 12:10
投稿者twin
Listviewでのマウスアクションで項目を並べ替えたいのです。
カラムクリックでのソートはできるのですが、項目を掴んでのドラックの並べ替えがうまくいきません。
というか、取っ掛かりすらわかりません。
せめて、取っ掛かりがわかれば、対処できるかも…なんて甘く考えています。

どうぞ、ご教授ください。

[ツリー表示へ]
タイトルRe: 【VB6】ListViewでのマウスドラック゛で項目並替え
記事No12698
投稿日: 2008/07/04(Fri) 13:06
投稿者魔界の仮面弁士
> Listviewでのマウスアクションで項目を並べ替えたいのです。
> カラムクリックでのソートはできるのですが、項目を掴んでのドラックの並べ替えがうまくいきません。

列の並び替えという意味なら、AllowColumnReorder プロパティで行えるかと。

[ツリー表示へ]
タイトルRe^2: 【VB6】ListViewでのマウスドラック゛で項目並替え
記事No12704
投稿日: 2008/07/04(Fri) 18:34
投稿者twin
レスありがとうございます。
当方の文章力の無さのせいですが、並べ替えたいのは
listViewに追加済みのテキスト項目をマウスで掴み上下にドラックして並べ替えたいのです。

ですので、お教えいただいたAllowColumnReorder プロパティではないと思われます。

言葉が足らず本当にすみません。
できれば、引き続きご指導願えたらと思います。

[ツリー表示へ]
タイトルRe^3: 【VB6】ListViewでのマウスドラック゛で項目並替え
記事No12718
投稿日: 2008/07/07(Mon) 10:34
投稿者魔界の仮面弁士
> listViewに追加済みのテキスト項目をマウスで掴み上下にドラックして並べ替えたいのです。

基本的には、以下のような流れになります。

(1) HitTest メソッドを使い、ドラッグされた位置を判定します。
(2) ListItems.Remove してから、Index を指定して .Add して挿入します。

なお、Remove された ListItem は再利用できないので、Add の際には
テキスト情報やアイコン情報なども再指定する必要があります。

[ツリー表示へ]
タイトルRe^4: 【VB6】ListViewでのマウスドラック゛で項目並替え
記事No12719
投稿日: 2008/07/07(Mon) 11:34
投稿者ダンボ
> なお、Remove された ListItem は再利用できないので、Add の際には
> テキスト情報やアイコン情報なども再指定する必要があります。

ならば、 ListItem を Add した後で、元のインデックス値(元より下に追加した場合)または
元のインデックス値+1(元より上に追加した場合)の要素をRemove すればよいのではないでしょうか?

[ツリー表示へ]
タイトルRe^5: 【VB6】ListViewでのマウスドラック゛で項目並替え
記事No12720
投稿日: 2008/07/07(Mon) 12:57
投稿者魔界の仮面弁士
>> なお、Remove された ListItem は再利用できないので、Add の際には
>> テキスト情報やアイコン情報なども再指定する必要があります。
> ならば、 ListItem を Add した後で、元のインデックス値(元より下に追加した場合)または

その Add する際に、元の ListItemの各プロパティ(Text, SubItems, ListSubItems,
SmallIcon, Bold, Ghosted, Key, Tag, ……)を再指定する必要があります。

# .NET であれば、Remove したアイテムを、そのまま Add / Insert できるのだけれども。


> Remove すればよいのではないでしょうか?
重複登録できない情報(Key プロパティ)に関しては、Remove 後に設定する必要がありますね。

[ツリー表示へ]