ksup
March 22nd, 2001, 07:54 PM
how do I keep a listbox from refreshing till I have filled it. If I hide the form. It is much faster.
|
Click to See Complete Forum and Search --> : listbox Refresh? ksup March 22nd, 2001, 07:54 PM how do I keep a listbox from refreshing till I have filled it. If I hide the form. It is much faster. Clearcode March 23rd, 2001, 05:19 AM If you add items to a listbox using it's Add method it always refreshes the list. You can add items using the API which is fatser and in that case you can call LockWindowsUpdate() to prevent the listbox refreshing until it is full. Then call UpdateWindow() to refresh it all. The api declarations are: Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (byval hwndLock as Long) as Long Declare Function UpdateWindow Lib "user32" Alias "UpdateWindow" (byval hwnd as Long) as Long HTH, Duncan ------------------------------------------------- Ex. Datis: Duncan Jones Merrion Computing Ltd http://www.merrioncomputing.com shree March 23rd, 2001, 08:14 AM This is a code sample from MSDN. Add two List Box controls and a command button on the form. You can select items from the first List Box by Double clicking them. Each selected item will be added to the second List Box control and will be shown when you click the command button. private Const WM_SetRedraw = &HB private Const LB_ADDSTRING = &H401 private Declare Function SendMessage Lib "User" (byval hWnd as Integer, byval wMsg as _ Integer, byval wParam as Integer, lParam as Any) as Integer private Declare Function SendMessageByString Lib "User" Alias "PostMessage" (byval hWnd _ as Integer, byval wMsg as Integer, byval wParam as Integer, byval lParam as _ string) as Integer Sub Form_Load() Dim X as Integer Dim D as Integer Dim S as string 'Add some dummy data to List1 for X = 0 to 15 List1.AddItem "Item #" + Str$(X) next X End Sub Sub Command1_Click() 'Show updated list box now X = SendMessage(List2.hWnd, WM_SetRedraw, 1, 0) End Sub Sub List1_DblClick() 'Disable the Repaint event X = SendMessage(List2.hWnd, WM_SetRedraw, 0, 0) S = List1.List(List1.ListIndex) ' Must use SendMessageByString instead of ' List2.AddItem S to prevent redrawing D = SendMessageByString(List2.hWnd, LB_ADDSTRING, 0, S) End Sub codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |