Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Neuzeichnen TScrollbox, aber Fensterflackern

  Alt 11. Okt 2004, 10:03
Hallo,

eine bestehende Applikation benutzt eine TScrollBox, diese schmiert bekanntlich beim Scrollen.
Mit diesem Code am Anfang der betreffenden Unit habe ich einen MessageHandler reingeschmuggelt.
Der wird auch sauber aufgerufen.

Delphi-Quellcode:
type TScrollBox = class(Forms.TScrollBox)
  private
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  end;

type MainForm = class(TForm)
...

//geklaut von TCustomListView.WMVScroll !!
procedure TScrollBox.WMVScroll(var Message: TWMVScroll);
var
  Before, After: Integer;
begin
  Before := GetScrollPos(ScrollboxHandle, SB_VERT);
  inherited;
  After := GetScrollPos(ScrollboxHandle, SB_VERT);
  if (Before <> After) then
    InvalidateRect(ScrollboxHandle, nil, True);
end;
Den CartScrollBoxHandle hole ich mir bei Form.Onactivate:
ScrollBoxHandle := ScrollBox.Handle; Der Handle hat auch einen Wert. Die Funktion habe ich vom TCustomListView geklaut. Beim Scrollen eines ListViews wird nur der ListView neugezeichnet. Bei mir wird anscheinend das komplette Fenster neugezeichnet, da es flackert. Bei Update, Repaint, Invalidate das gleiche. (wäre auch unlogisch)

Ideen?

Grüße

Sebastian
Sebastian
  Mit Zitat antworten Zitat