Ver Mensaje Individual
  #2  
Antiguo 20-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Porque es el comportamiento que tienen los forms.

Como sabes, realmente no los cierra, los esconde. Al hacer un show, mirando su código hace esto:
Código Delphi [-]
procedure TCustomForm.Show;
begin
  Visible := True;
  BringToFront;
end;
Como ves, no modifica sus propiedades Left y Top y esto es lógico.

Imagina que creo una ventana, antes de mostrarla cambio su top y left para ponerla a mi gusto en un lugar de la pantalla y después Show lo centra en pantalla.... grrrrrr.

Se me ocurre, modificar el comportamiento de los forms así, Crea uno nuevo que se usará como base:
Código Delphi [-]

TBaseForm = class(tform)


protected
    procedure DoShow;override;
end;

implementation

procedure TBaseForm.DoShow;
begin
 // aquí centras el form, 
 inherited DoShow;
end;
Guarda el .pas como UbaseForm y el form como frmBaseForm.

Ahora te vas a todos tus Forms, y donde pone:
Código Delphi [-]
FormXX = Class(TForm)
sustituyes el "TForm" por "TBaseForm" y haces un "uses UBaseForm" de la unidad recien creada. Todos tus forms, al heredar ahora de TBaseForm, harán lo que quieres.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita