Ceci est une ancienne révision du document !


Dessin du TControl

Dessin des Controls

Bloquer l'affichage du control lors d'un Update

Il est possible que l'on ai besoin de “figer” le contrôle, lorsque l'on met a jour ses enfants par exemple, pour éviter le scintillement de celui-ci.

Malheureusement, TControl, n'implemente pas BeginUpdate et EndUpdate.

par SendMessage

Source : https://stackoverflow.com/questions/3792217/how-can-i-disable-screen-update-which-updating-a-lot-of-controls

Non tésté !
begin
  // Defer updates
  SendMessage(Handle, WM_SETREDRAW, WPARAM(False), 0);
  try
    // Create all your controls here
  finally
    // Make sure updates are re-enabled
    SendMessage(Handle, WM_SETREDRAW, WPARAM(True), 0);
    // Invalidate;  // Might be required to reflect the changes  
  end;
end;

via LockWindowUpdate

Source : https://forum.lazarus.freepascal.org/index.php?topic=43638.0

LockWindowUpdate(Control.Handle);
try
  //...
finally
  LockWindowUpdate(0);
end;

ControlStyle et "transparence"

Pour qu'un control puisse prendre la couleur du Parent, il faut definir : ParentColor et ControlStyle

  ParentColor:=true;
  ControlStyle := ControlStyle + [csOpaque];
  Canvas.Pen.Color:=clWhite;
  canvas.Pen.Style:=psDot;
  Canvas.Frame(vRect);
Vous pourriez laisser un commentaire si vous étiez connecté.