Visual Basic, .NET, ASP, VBA, VBScript
 
  Библиотека кодов  
  Стандартные элементы >>> ListBox  
     
  ListBox / ComboBox - добавление массива данных  
  Данная процедура предназначена для добавления массива данных в элементы ListBox / ComboBox, используя АПИ-функции. Данная процедура работает быстрее, чем процедура, основанная на методе AddItem.

Для примера вам понадобится ComboBox и 2 элемента CommandButton. Вместо элемента ComboBox можно расположить ListBox, только не забудьте в событиях нажатия на CommandButton прописать тот контрол (ListBox / ComboBox), который вы расположите на форме.


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
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Private Const LB_ADDSTRING = &H180
Private Const LB_RESETCONTENT = &H184
Private Const CB_ADDSTRING = &H143
Private Const CB_RESETCONTENT = &H14B

Sub ArrayToListBox(ctrl As Object, arr As Variant, Optional clearIt As Boolean, _
Optional ByVal First As Variant, Optional ByVal Last As Variant)
Dim msgReset As Long
Dim msgAdd As Long
Dim hWnd As Long
Dim index As Long
If TypeOf ctrl Is ListBox Then
msgReset = LB_RESETCONTENT
msgAdd = LB_ADDSTRING
ElseIf TypeOf ctrl Is ComboBox Then
msgReset = CB_RESETCONTENT
msgAdd = CB_ADDSTRING
Else
Exit Sub
End If
If IsMissing(First) Then First = LBound(arr)
If IsMissing(Last) Then Last = UBound(arr)
' отменить перерисовку
hWnd = ctrl.hWnd
LockWindowUpdate hWnd
' очистить контрол, если требуется
If clearIt Then
SendMessage hWnd, msgReset, 0, 0
End If
' добавить элементы в контрол
For index = First To Last
SendMessage hWnd, msgAdd, 0, ByVal CStr(arr(index))
Next
LockWindowUpdate 0
End Sub

Private Sub Command1_Click()
'метод, основанный на АПИ-функциях
Dim d()
s = 10000: s1 = Timer
ReDim d(s)
For i = 1 To s: d(i) = i: Next
Call ArrayToListBox(Combo1, d(), True, 6, 4578)
s2 = Timer
MsgBox s2 - s1
End Sub

Private Sub Command2_Click()
'метод, основанный на методе AddItem
s = 10000: s1 = Timer
For i = 1 To s: Combo1.AddItem i: Next
s2 = Timer
MsgBox s2 - s1
End Sub
 
     
  VBNet online (всего: 52050)  
 

Логин:

Пароль:

Регистрация, забыли пароль?


В чате сейчас человек
 
     
  VBNet рекомендует  
   
     
  Лучшие материалы  
 
ActiveX контролы (112)
Hitman74_Library (36119)
WindowsXPControls (20739)
FlexGridPlus (19374)
DSMAniGifControl (18295)
FreeButton (15157)
Примеры кода (546)
Parol (18027)
Passworder (9299)
Screen saver (7654)
Kerish AI (5817)
Folder_L (5768)
Статьи по VB (136)
Мое второе впечатление... (11236)
VB .NET: дорога в будущее (11161)
Основы SQL (9225)
Сообщения Windows в Vi... (8788)
Классовая теория прогр... (8619)
 
     
Техническая поддержка MTW-хостинг | © Copyright 2002-2011 VBNet.RU | Пишите нам