Question

Lors du redimensionnement d'une forme avec de nombreux contrôles, la forme semble mauvais à cause de scintillement. Quels sont quelques conseils pour avoir un redimensionnement de forme plus lisse?

Était-ce utile?

La solution

procedure TForm1.WMEnterSizeMove(var Message:TWMMove);
begin
  Self.DisableAlign;
end;

procedure TForm1.WMExitSizeMove(var Message:TWMMove);
begin
  Self.EnableAlign;
end;

Autres conseils

Essayez d'utiliser WM_SETREDRAW ( pas LockWindowUpdate ).

Vous pouvez également jeter un oeil à DeferWindowPos .

formes complexes sont souvent constitués de panneaux imbriqués, et le processus de repeindre peuvent provoquer des scintillements. Si tel est le cas avec votre projet, il y a deux solutions faciles qui peut help:

  1. Désactiver la propriété FullRepaint sur vos panneaux.
  2. Activer la propriété DoubleBuffered sur votre formulaire. Vous ne trouverez pas cette propriété sur l'inspecteur d'objets, alors mettez DoubleBuffered := true; FormCreate.

J'ai autour de cela comme suit:

  1. Dans le cas « OnResize » de la forme, ont une routine pour cacher tous les contrôles enfants et commencer une minuterie avec une tique d'environ 500 ms.
  2. Lorsque les feux de la minuterie, désactivez puis définissez tous les contrôles enfants à visibles.

En jouant avec cette activité, vous obtenez une forme qui se vide pendant que vous le dimensionnement, mais se remplit alors d'une manière ordonnée lorsque vous lâchez.

Bri

I éviter le scintillement en alignant pour contenir tous les autres composants ne dépassant pas 1 composant non alClient par parent, toujours associé à un alClient (par exemple un TPanel). Regroupez-les dans les panneaux sans frontières.

Dites que vous voulez allign trois choses: alLeft, alTop et alClient pour la vue principale. Ne faites ceci: Form alTop alLeft alClient // your main view

Mais au lieu intégrer ceux-ci comme suit: Form alTop alClient // panel to avoid flicker alLeft alClient // your main view

Même chose pour intégrer plusieurs éléments alTop.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top