Ein StringGrid mit Customdraw wird kaum schneller gezeichnet werden, als das Standardverhalten.
Du könntest aber solange du Zelleninhalte aktualisierst das Neuzeichnen verhindern:
Delphi-Quellcode:
{**************************************************************************
* NAME: LockControl
* DESC: Ein Control am Refresh hindern (orginal Code by TeamB)
* PARAMS: c => das Control ()
* lock => True:Control sperren
* CREATED: 28-04-2000/shmia
* CHANGED: 03-05-2000/shmia
*************************************************************************}
procedure LockControl(c: TWinControl; lock: boolean);
begin
if (c = nil) or (c.Handle = 0) then exit;
if lock then SendMessage(c.Handle, WM_SETREDRAW, 0, 0)
else begin
SendMessage(c.Handle, WM_SETREDRAW, 1, 0);
RedrawWindow(c.Handle, nil, 0,
RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
end;
end;
Delphi-Quellcode:
// Beispiel
try
LockControl(StringGrid1, True);
// Zellen aktualisieren
for x := ........
StringGrid1.Cells[x, ...] := ....
finally
LockControl(StringGrid1, False);
end;