I have managed to correct or work around all the bugs in this modified component except for one. The source for it is available here:
http://www.chessoscorner.com/DELPHI/CListBox.zip
The last remaining problem I can't seem to solve on my own and could really do with some help. You might have noticed with a normal TListBox that when changing Item selection Either Up or Down beyond the visible bounds, it will scroll smoothly to the next item.
Unfortunately this behaviour does not exist with this component, Instead the selection keeps moving up or down beyond the visible bounds and it does not scroll with it, so you can't see the selection.
There is a line in the source that I have commented that is a temporary fix, it basically sets the selected item as the very top one which makes things very not smooth.
Hope someone understands what I am trying to accomplish and can help

.