Beim Mousemove führe ich ein InvalidateRect aus.
Das Problem dabei ist das mir dann die FPS in den Keller geht.
Delphi-Quellcode:
if GdipCreateFromHDC(
Dc, Graphics) = OK
then
begin
if nItem <> OldItem
then
begin
Height := rc.bottom + CurPos.y;
Count := ListView_GetItemCount(WinHandle);
if (((nItem - TopItem) * ItemHeight)
div ItemHeight) <= Count
then
begin
if nItem <= ((Height - CurPos.y)
div ItemHeight) + TopItem
then
begin
SkinEngine.FInvalidateRect(WinHandle, True);
// Hier das Invalidate
SkinEngine.PaintButton(Graphics, 5, ImgBack, rc.Left,
((nItem - TopItem) * ItemHeight) + 7, rc.Right, ItemHeight, BS_PUSHBUTTON);
end;
end;
end;
OldItem := nItem;
GdipDeleteGraphics(Graphics);
end;
Gibt es eine andere Möglichkeit den Button des zuletzt ausgewählten Item ohne Invalidate zu löschen?
TrackMouse, SetCapture oder ähnliches?
TrackMouse funktioniert ja nur für das gesamte Control oder auch für Items? (ListView)
Hoffe das es verständlich genug ist was ich erreichen möchte.
gruss