Frage

Ich habe ein Problem, das ich nicht in der Lage bin zu lösen, obwohl ich lange Zeit mit dem Versuch verbringen, es zu tun.

ich in der Regel GridPanels verwendet Steuerelemente auf Formulare auszurichten. Es hat jedoch einen ärgerlichen Fehler. Wenn die Gridpanel Ausrichtungsmodus alClient ist und ich maximieren sein übergeordnetes Fenster, das Gridpanel des Fensters auf die neue Größe passt jedoch nicht die Kontrollen auf dem Gitter Verlegung nicht. Sie bleiben in der gleichen Position, die sie vor dem Fenster Resize waren. Es geschieht nur bei dem ersten Fenster Maximierung. Wenn das Fenster zunächst manuell geändert wird, ist every OK. Ich denke, dass das Gitter seiner untergeordneten Steuerelemente nach dem zweiten Grßenänderungsereignis einstellt (??).

Was zu tun Gridpanel Arbeit richtig zu machen, wenn es zu diesem Fehler kommt? Es könnte ausreichen, um eine Nachricht an sie zu senden (aber welche Botschaft?), Ich weiß es nicht. Ich habe versucht, neu ausrichten zu verwenden, Aktualisieren usw., aber sie hat nicht geholfen.

Vielen Dank für Ihre Hilfe im Voraus,

Mariusz.

War es hilfreich?

Lösung

Ah, ich habe auch ähnliche Probleme hat. Es könnte zu einer Redimensionierung Problem in der VCL in Beziehung gesetzt werden. Sie könnten das Update von Andreas Hausladen versuchen. Es scheint für mich in den meisten Fällen zu arbeiten.

Andere Tipps

fand ich einen Trick.

in OnResize Fall Eltern von Gridpanel, ändern Gridpanel der Breite um 1 Pixel.

dann wird Gridpanel bemerken Größe geändert, dann ordnet Unter Kontrollen in Gridpanel ..

Beispiel unten ist ..

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.Width := GridPanel1.Width - 1;  // subtract 1
  GridPanel1.Width := GridPanel1.Width + 1;  // recover width by adding 1
end; 

Ändern die Breite / entkräftet die Steuerung nicht für mich arbeiten (etwas mit neueren Versionen von RAD Studio geändert?).

Wie auch immer eine ähnliche, einfache Abhilfe entlang dieser Linie ist:

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.ControlCollection.BeginUpdate;
  GridPanel1.ControlCollection.EndUpdate;
end; 

Ich habe diesen Fehler zu hatte, an mehreren Projekten. Ich bin nicht sicher, wie ich das gelöst (es war an Projekten für meine früheren Arbeitgeber, ich habe keinen Zugriff auf diesen Quellcode mehr). Ich glaube, ich hatte te neu zu zeichnen / aktualisieren, die übergeordnete Frame oder Formular, auf das die Gridpanel getätigt.

auf dem Resize des Eigentümers Anruf GridPanel.Invalidate. Ich habe es nicht getestet. Ich hoffe, es ist Arbeit.

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