Man kann in dem Systemeinstellungen einstellen, wie die Maus scrollen soll. Wird das da eventuell überschrieben?
Ja das kann man aber so wie ich weiß nur das MouseWheel
Da ist eingestellt für eine Zeile und Scrollt 3 wenn ich es einstelle.
Da muss ich mal schaun wie ich an die Systemeinstellungen dran komme um das korrekt Codemäßig zu händeln.
Seltsamer weise scrollt die mit dem Wheel runter 1 zeile und hoch 2.
Mein Hauptproblem ist die Scrollbar Standard vom ListView das Teil macht was es will die Positionen sind falsch.
Funktioniert beim MouseWheel.
Delphi-Quellcode:
TopIndex := ListView_GetTopIndex(WinHandle);
SetTopItem(WinHandle, TopIndex + direction);
Das umgesetzt auf die Scrollbar ist alles falsch.
Delphi-Quellcode:
case wp of
SB_LINEUP:
SetTopItem(WinHandle, sci.nPos - 1);
SB_LINEDOWN:
SetTopItem(WinHandle, sci.nPos + 1);
end;
Delphi-Quellcode:
function TSkinListView.SetTopItem(hwndLV: hWnd; nItem: Integer): Integer;
var
lvItemsPerPage: Integer;
lvTopIndex: Integer;
lvItemCount: Integer;
begin
lvTopIndex := ListView_GetTopIndex(hwndLV) + 1;
lvItemsPerPage := ListView_GetCountPerPage(hwndLV);
lvItemCount := ListView_GetItemCount(hwndLV);
if lvTopIndex > nItem then
begin
ListView_EnsureVisible(hwndLV, nItem + 1, False);
OldSelected := nItem + 1;
end else
if (nItem - lvTopIndex) >= lvItemsPerPage then
begin
if (nItem + lvItemsPerPage) > lvItemCount then
begin
ListView_EnsureVisible(hwndLV, lvItemCount, False);
OldSelected := lvItemCount;
end else
begin
ListView_EnsureVisible(hwndLV, (nItem + lvItemsPerPage) - 1, False);
OldSelected := (nItem + lvItemsPerPage) - 1;
end;
end;
Hmmmm....
gruss