Оказывается, что метод ItemAtPos компонента ListBox - печальная жертва одной ошибки. Справочная система сообщает, что если вы вызываете ItemAtPos с параметром Existing, установленным в False и позиция курсора находится не над существующим элементом списка, функция возвращает позицию ПОСЛЕДНЕГО элемента списка.
ОШИБКА: TListBox.ItemAtPos(Point(X,Y), False) НЕ возвращает позицию последнего элемента списка когда курсор не над элементом. В этом случае функция возвращает позицию следующего, не существующего элемента списка. [000345]