リストボックスでよく使用する設定集 |
指定の行を選択状態にする 指定の行のデータを取得する (143) | |
Private Sub Command1_Click() '指定の行を選択状態にする List1.Selected(CInt(Text1.Text) - 1) = True '指定行のデータを取得する Label1.Caption = List1.List(CInt(Text1.Text) - 1) 'こちらの方が簡単かも 'Label1.Caption = List1.Text End Sub |
|
選択されているデータを取得する (143) | |
Private Sub Command2_Click() '選択されているデータを取得する Label2.Caption = List1.List(List1.ListIndex) 'こちらの方が簡単かも 'Label2.Caption = List1.Text End Sub |
|
指定行に項目を追加する (143) | |
Private Sub Command3_Click() '指定行に項目を追加する List1.AddItem "★10行目に新たに追加★", 10 - 1 End Sub |
|
指定行の項目を書き変えます (143) | |
Private Sub Command4_Click() '指定行の項目を書き変えます List1.List(10 - 1) = "☆10行目を書換えました★" End Sub |
|
指定行の項目を削除します (143) | |
Private Sub Command5_Click() '指定行の項目を削除します List1.RemoveItem 10 - 1 End Sub |
|
指定行をトップ位置に設定します (143) | |
Private Sub Command6_Click() '指定行をトップ位置に設定します List1.TopIndex = 10 - 1 End Sub |
|
複数の項目を選択した場合の取得 (143) | |
Private Sub Command7_Click() '複数の項目を選択した場合の取得 Dim ICount As Integer For ICount = 0 To List1.ListCount - 1 If List1.Selected(ICount) Then Debug.Print List1.List(ICount), ICount + 1 End If Next ICount End Sub |
|
選択した項目をクリップボードにコピー (143) | |
Private Sub Command10_Click() '選択した項目をクリップボードにコピー Dim intCount As Integer Dim ListDate As String With List1 Me.MousePointer = vbHourglass DoEvents .Visible = False For intCount = 0 To .ListCount - 1 If (.Selected(intCount)) Then ListDate = ListDate & .List(intCount) & vbCrLf End If Next intCount .Visible = True End With 'クリップボードを初期化 Clipboard.Clear 'クリップボードにコピー Clipboard.SetText ListDate Me.MousePointer = vbDefault End Sub |
|
複数の項目を指定位置に揃えて表示 (143) | |
Private Sub Command13_Click() '複数の項目を指定位置に揃えて表示 With List2 .Visible = False .FontName = "MS ゴシック" .FontSize = 9 .AddItem StrCut("〒527-0011", 12) & StrCut("八日市市 12-12", 18) _ & StrCut("蚊取 新語", 14) .AddItem StrCut("〒547-0011", 12) & StrCut("大津市 12-1", 18) _ & StrCut("木邑 多来也", 14) .AddItem StrCut("〒555-0011", 12) & StrCut("彦根市 城町 1-15", 18) _ & StrCut("草柳 強", 14) .Visible = True End With End Sub StrCut 関数については、逆引きヘルプの 文字列を指定の幅にカット(漢字分断回避) (081) 参照して下さい。 |
|
エクスプローラーよりドラッグ・アンド・ドロップでファイル名を追加 (143) | |
Private Sub Command14_Click() 'エクスプローラーよりドラッグ・アンド・ドロップ If List1.OLEDropMode = vbOLEDropNone Then 'OLE ドロップ イベントを発生させます List1.OLEDropMode = vbOLEDropManual Else 'OLE ドロップを受け付けず List1.OLEDropMode = vbOLEDropNone End If End Sub Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, _ Button As Integer, Shift As Integer, x As Single, y As Single) 'ドロップされたファイル名を追加 Dim i As Integer For i = 1 To Data.Files.Count List1.AddItem Data.Files.Item(i), 0 Next End Sub |
|
以下の設定はAPI関数を使用しますので宣言セクションに下記のコードを 記入して下さい Option Explicit 'SampleNo=143 WindowsXP VB6.0(SP5) 2002.05.25 '指定のウィンドウにメッセージを送る(P750) Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long '指定の項目の高さを取得する(P819) Private Const LB_GETITEMHEIGHT = &H1A1 '指定の項目の高さを設定する(P827) Private Const LB_SETITEMHEIGHT = &H1A0 ’複数選択リストボックスの指定の項目を選択(P828) Private Const LB_SETSEL = &H185 |
|
すべての項目を選択状態にする 選択状態を解除する (143) | |
Private Sub Command11_Click() Dim Ret As Long 'すべての項目を選択状態にする Ret = SendMessage(List1.hWnd, LB_SETSEL, 1&, ByVal -1&) '選択状態を解除する Ret = SendMessage(List1.hWnd, LB_SETSEL, 0&, ByVal -1&) End Sub |
|
現在の行の高さを求める 行の高さを設定する (143) | |
Private Sub Command9_Click() Dim Ret As Long '現在の行の高さを求める Ret = SendMessage(List1.hWnd, LB_GETITEMHEIGHT, 0&, ByVal 0&) '行の高さを現在より10%高くする Ret = SendMessage(List1.hWnd, LB_SETITEMHEIGHT, 0&, ByVal CLng(Ret * 1.1)) List1.Refresh End Sub |
|
リストボックスでよく使用する設定だが、忘れていたり、人に聞けないようなものを集めて見ました。 別途データの入力部分は作っておいて下さい。又複数選択する場合はプロパティの設定を下記の 'List1.MultiSelect = 2 別途設定しておいて下さい ように設定しておいて下さい。 |
2002/05/25