Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Stringgrid selber zeichnen, wie ?

  Alt 2. Aug 2004, 11:06
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;
Andreas
  Mit Zitat antworten Zitat