Я реализовал средство просмотра журнала, используя TListBox
в виртуальном режиме .
Он отлично работает (для всего кода, который я написал), отображает содержимое, как и ожидалось (я даже легко добавил горизонтальную полосу прокрутки), но я предполагаю, что достиг некоторого предела вертикальной полосы прокрутки.
То есть, когда я прокручиваю вертикальную полосу сверху вниз, она не прокручивает содержимое до конца списка, а только до некоторого предела.
Знаете ли вы какую-либо возможность избавиться от этого лимита? Я попытался с SetScrollInfo
, но это не сработало, так как лимит звука звучит не на полосе прокрутки, а в самом TListBox
.
Я знаю решение создания выделенного TCustomControl
: в этом случае SetScrollInfo
будет работать как положено. Но кто-нибудь знает о решении / уловке, чтобы все еще использовать TListBox
?
Редактировать: , чтобы прояснить - я не прошу стороннее компонентное решение, но хочу знать, есть ли какое-либо низкоуровневое сообщение GDI для отправки в стандарт TListBox
переопределить этот лимит. Если их нет, я перейду к выделенному решению TCustomControl
.
Вот код, использующий TSCROLLINFO:
procedure ScrollVertHuge(Handle: HWND; count: integer);
var Scroll: TSCROLLINFO;
begin
Scroll.cbSize:= sizeof(Scroll);
Scroll.fMask := SIF_DISABLENOSCROLL or SIF_RANGE;
Scroll.nMin := 0;
Scroll.nMax := count;
SetScrollInfo(Handle,SB_VERT,Scroll,false);
end;
Чтобы уточнить проблему: Добавление и отрисовка обеих работ, конечно, (мой инструмент работает как положено), но не работает перетаскивание вертикальной полосы прокрутки. Я переименовал название вопроса и избавился от устаревших статей MSDN, которые сбивают с толку.