Ich habe eine Protokoll-Viewer mit einer TListBox
im virtuellen Modus .
Es funktioniert gut (für alle den Code, den ich geschrieben habe), zeigt den Inhalt wie erwartet (ich habe sogar eine horizontale Bildlaufleiste leicht hinzugefügt), aber ich denke, ich habe die irgendeine Art von Grenze der vertikalen Bildlaufleiste erreicht.
Das heißt, wenn ich die vertikale Leiste von oben nach unten verschiebe, wird der Inhalt nicht bis zum Ende der Liste verschoben, sondern nur bis zu einer bestimmten Grenze.
Kennen Sie eine Möglichkeit, diese Beschränkung aufzuheben? Ich habe es versucht mit SetScrollInfo
aber es hat nicht funktioniert, da die Grenze nicht in der Bildlaufleiste, sondern in der TListBox
selbst.
Ich kenne die Lösung, eine eigene TCustomControl
: In diesem Fall ist die SetScrollInfo
wird wie erwartet funktionieren. Aber kennt jemand eine Lösung/Trick, um trotzdem TListBox
?
Edit : um es klar zu machen - ich frage nicht nach einer (Drittanbieter-) Komponentenlösung, sondern danach, ob es eine Low-Level-GDI-Nachricht gibt, die an den Standard TListBox
um dieses Limit zu überschreiben. Wenn es keine gibt, gehe ich zu dem speziellen TCustomControl
Lösung.
Hier ist der Code, der TSCROLLINFO verwendet:
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;
Um das Thema zu präzisieren: Hinzufügen und Zeichnen funktionieren natürlich (mein Werkzeug funktioniert wie erwartet), aber was nicht funktioniert, ist das Ziehen der vertikalen Bildlaufleiste. Ich habe den Titel der Frage umbenannt und bin die veralteten MSDN-Artikel losgeworden, die verwirrend sind.