Pregunta

Tengo un problema Soy incapaz de resolver a pesar de que me paso mucho tiempo tratando de hacerlo.

lo general el uso GridPanels para alinear los controles en los formularios. Tiene, sin embargo, un insecto molesto. Cuando el modo de GridPanel align es alClient y maximizar su ventana padre, el GridPanel ajusta al nuevo tamaño de dicha ventana, sin embargo, los controles que ponen en la red no lo hacen. Se quedan en la misma posición que estaban antes de cambiar el tamaño de la ventana. Sucede solamente en la maximización de la primera ventana. Si la ventana es redimensionada primero manualmente, everyting está bien. Creo que la rejilla se ajusta sus controles secundarios después de que el segundo evento de cambio de tamaño (??).

Lo que hay que hacer que el trabajo GridPanel correctamente si se trata de este error? Podría ser suficiente para enviar un mensaje a ella (pero ¿qué mensaje?), No sé. He intentado utilizar Realinee, actualizar, etc., pero no sirvió de nada.

Gracias por su ayuda por adelantado,

Mariusz.

¿Fue útil?

Solución

Ah, he tenido problemas similares también. Podría estar relacionado con un problema de cambio de tamaño en el VCL. Es posible que desee probar el arreglo de Andreas Hausladen . Parece que funciona para mí en la mayoría de los casos.

Otros consejos

He encontrado un truco.

en OnResize caso de matriz de gridpanel, cambiar el ancho de gridpanel por 1 píxel.

A continuación, se dará cuenta de gridPanel tamaño cambiado, entonces reorganizar controles secundarios en gridpanel ..

muestra es inferior ..

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

Al cambiar el ancho / invalidar el control no funciona para mí (algo cambió con las versiones recientes de RAD Studio?).

De todos modos una solución semejante, simple a lo largo de esa línea es:

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

He tenido este error también, en varios proyectos. No estoy seguro de cómo resolví esto (que estaba en los proyectos de mi empleador anterior, no tengo acceso a este código fuente ya no). Creo que te había redibujar / actualizar ese marco de los padres o forma en que se colocó el GridPanel.

en el cambio de tamaño de la llamada GridPanel.Invalidate propietario. No he probado la misma. Espero que sea el trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top