Frage

Wenn Sie ein Formular mit vielen Kontrollen Ändern der Größe, der Form wegen Flimmern schlecht aussieht. Was sind einige Tipps, um eine glattere Form Größenanpassung haben?

War es hilfreich?

Lösung

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

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

Andere Tipps

Versuchen WM_SETREDRAW mit ( nicht LockWindowUpdate ).

Sie können auch einen Blick auf DeferWindowPos .

Komplexe Formen werden oft aus verschachtelten Platten hergestellt, und der Neuzeichnungsindex Prozess führen kann flackern. Ist dies der Fall mit Ihrem Projekt gibt es zwei einfache Lösungen, die Macht Hilfe:

  1. Deaktivieren Sie die Eigenschaft FullRepaint auf Ihre Platten.
  2. Aktivieren Sie die Eigenschaft DoubleBuffered auf dem Formular. Sie finden nicht diese Eigenschaft auf dem Objekt-Inspektoren finden, so setzen DoubleBuffered := true; in Formcreate.

Ich habe um diese bekam wie folgt:

  1. In der ‚OnResize‘ Ereignis des Formulars, eine Routine alle untergeordneten Steuerelemente zu verstecken und dann einen Timer mit einem Haken von etwa 500 ms starten.
  2. Wenn die Timer Feuer, deaktivieren Sie es und legen Sie dann alle untergeordneten Steuerelemente sichtbar.

Durch das Spiel mit dieser Aktivität erhalten Sie ein Formular, das leer wird, während Sie es Sizing, aber dann füllt sich ordentlich, wenn Sie ‚loslassen‘.

Bri

I vermeiden Flackern von nicht mehr als Ausrichtung 1 nicht-alClient Komponente pro Elternteil, immer mit einem alClient gepaart (beispielsweise einem TPanel), um alle anderen Komponenten enthalten. Gruppe sie in Platten ohne Grenzen.

Sagen Sie drei Dinge allign wollen: alLeft, alTop und alClient für die Hauptansicht. Dont dies tun: Form alTop alLeft alClient // your main view

Doch statt einbetten dieser wie folgt: Form alTop alClient // panel to avoid flicker alLeft alClient // your main view

Die gleiche Geschichte für mehr alTop Elemente eingebettet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top