All the Redrawing code should not be needed. Windows already sends notices to the app after doing this..
SendMessage(ListBox1.Handle, LB_SELITEMRANGE,1,MakeLong(0,ListBox1.Count-1));
For example the above will select all of it and notified the app with proper messages.
There is one note however, if the user should pass a -1 for the ranges the code in the widget should adjust the values to the proper ranges..
For example if the High Value is -1 then it should change the value to the ListBox.Count-1;
Doing it this way the coder does not need to include the max list range of the listbox, it will just adjust it for them..
I don't think the windows API likes seeing a value past what is actually in there so this should only happen if the coder past a -1..