Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Listbox Добавлено: 23.01.08 08:44  

Автор вопроса:  Lenon
как обратиться к элементу стоящему в 5 колонке, 2 строке в Listboxе, еще вопрос а если мне необходимо обратиться к элементу стоящему в n-ной колонке, m-ной строке?
вопрос еще один
проблема следующая:
 при щелчке мыши на одну из строк листбокса появлялась кнопка рядом с курсором, как это сделать?
помогите если не трудно

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 23.01.08 13:01
Вот такой вот код я щас написал. Если кто-то знает как проще - скажите, пожалуйста.
На форме должен быть листбокс с именем List1.

Const LB_GETITEMHEIGHT = &H1A1
Const CCHILDREN_SCROLLBAR = 5
Const OBJID_HSCROLL As Long = &HFFFFFFFA

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type SCROLLBARINFO
    cbSize As Long
    rcScrollBar As RECT
    dxyLineButton As Long
    xyThumbTop As Long
    xyThumbBottom As Long
    reserved As Long
    rgstate(CCHILDREN_SCROLLBAR) As Long
End Type

Private Declare Function GetScrollBarInfo Lib "user32" (ByVal hwnd As Long, ByVal idObject As Long, psbi As SCROLLBARINFO) As Long
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

Dim ItemsInColumn As Integer
Dim SInfo As SCROLLBARINFO


Private Sub Form_Load()
    Me.ScaleMode = 3
    ' заполняем листбокс
    For i = 1 To 50
        List1.AddItem Str(i)
    Next
    ' выводим в заголовок окна значение из второй строки второго столбца List1
Me.Caption = GetItem(List1, 2, 2)
End Sub

Function GetItem(cList As ListBox, ByVal Ln As Integer, ByVal Col As Integer) As String
    Dim ret As Long
    Dim ScrollBarHeight As Long
    ' определяем высоту полосы прокрутки
    SInfo.cbSize = Len(SInfo)
    ret = GetScrollBarInfo(cList.hwnd, OBJID_HSCROLL, SInfo)
    ScrollBarHeight = SInfo.rcScrollBar.Bottom - SInfo.rcScrollBar.Top
    If (ScrollBarHeight > Screen.Height * Screen.Height / Screen.TwipsPerPixelY) Or (ScrollBarHeight < 0) Then ScrollBarHeight = 0
    ' определяем высоту элемента списка
    ret = SendMessage(cList.hwnd, LB_GETITEMHEIGHT, 0&, ByVal 0&;)
    ' находим количество элементов в столбце
    ItemsInColumn = (cList.Height - ScrollBarHeight) / ret
    If ScrollBarHeight Then ItemsInColumn = ItemsInColumn - 1
    ' собственно, извлекаем значение элемента
    GetItem = cList.List((Col - 1) * ItemsInColumn + Ln - 1)
End Function

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 23.01.08 13:10
Естественно, свойство Columns дольжно быть больше 1. Но и так буит работать =)
P.S.
Используй ListView или DataGrid в таких случаях.

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 23.01.08 13:44
Кстати, прошу кого-нить проверить код на работоспособность. На моей винде вроде работает как задумывал... =)

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 23.01.08 20:21
Работает хорошо=) как надо

(забыл объявить i)

Ответить

Номер ответа: 5
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #5 Добавлено: 23.01.08 20:38

Кстати, прошу кого-нить проверить код на работоспособность

У тебя больно ник подходящий, дабы проверять! D)
Executioner

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 23.01.08 21:32
Ну... какой есть)

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 24.01.08 00:34
По поводу последнего вопроса вот тебе примерчик.
http://www.freefilehosting.net/download/3b07c

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам