Hola.
Siempre que el MDIForm sea mayor, podes centrar los MDIChilds luego de la creación, v. gr.:
Código PHP:
void __fastcall TMDIForm::CenterForm(TForm *F)
{
F->Left = (this->ClientWidth - F->Width) / 2;
F->Top = (this->ClientHeight - F->Height - this->ToolBar1->Height ) / 2;
}
// Ejemplo de uso:
void __fastcall TMDIForm::ToolButton1Click(TObject *Sender)
{
if (!MDIChild1) // ( * )
MDIChild1 = new TMDIChild1(this);
else
MDIChild1->BringToFront();
//...
CenterForm(MDIChild1);
}
( * ) Usando Action = caFree. La comprobación de la existencia del MDIChild requiere que pongas a nulo la instancia al cierre,
o podrá provocar una excepcion al intentar traer al frente un objeto ya liberado.
Código PHP:
void __fastcall TMDIChild1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
MDIChild1 = NULL; // <-
}
Si dejas el MDIChild minimizado al cerrarlo (no usas Action = caFree) deberías cambiar la linea,
Código PHP:
MDIChild1->BringToFront();
por:
Código PHP:
MDIChild1->WindowState = wsNormal;
Muestra:
(ajusté los tamaños de los MDIChild para que no se solapen)
Saludos