метод. Это может произойти с существующим приложением, и наличие такого обходного пути может быть очень полезным само по себе.

лизуюпросмотр журнала с использованием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, которые сбивают с толку.

Ответы на вопрос(2)

Ваш ответ на вопрос