Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como saber la posicion del form padre (https://www.clubdelphi.com/foros/showthread.php?t=50968)

pborges36 03-12-2007 20:37:50

Como saber la posicion del form padre
 
Holas. Tengo una consulta un tanto sencilla. Tengo una form el cual uso para cargar el detalle de factura, remito, etc. Para todo es el mismo form. Ahora bien, quiero que se abra en una determinada posicion respecto del form padre. Hice lo siguiente:

Código Delphi [-]
procedure TFormCarga.FormActivate(Sender: TObject);
begin
    self.Top:=self.Parent.Top+300;
end;

Pero me da un acces violation justo en esa linea.
Espero se entienda. Saludos.

dec 03-12-2007 20:41:14

Hola,

Tal vez no asignes al formulario como "padre" del que quieres mostrar. Si lo estás creando tal que así:

Código Delphi [-]
Form2 := TForm2.Create(Self);

"Self" no será el padre de "Form2", sino su "dueño". Dicho esto... creo que puedes "tirar" de la propiedad "Owner" del formulario que quieres mostrar. Puesto que este sí sería, en este caso, el formulario "dueño" del que quieres mostrar.

Por supuesto, puedes asignar el padre del formulario tras crearlo:

Código Delphi [-]
Form2 := TForm2.Create(Self);
Form2.Parent := Self;

Y también crearlo tal que así, aunque, no sé qué consecuencias exactamente implica esto:

Código Delphi [-]
Form2 := TForm2.CreateParented(Self);

Y tampoco recuerdo si de este modo habrías de proporcionar más bien el "Handle" de "Self".

Chris 03-12-2007 20:43:06

Respectoa al AccessViolation debe ser porque no está correctamente cargado alguno de los forms implecados, pero no me queda claro a que te refieres con "determinada posición respecto al form padre"... te refieres a centrada?, un poco a la izquierda y abajo. De todos modos, cuando llamas a Parent puede estarse refieriendo a la aplicación, debes tener certeza de que asignas correctamente el form padre al momento de crear el formulario.

pborges36 07-12-2007 13:58:55

Holas, gracias por las respuestas. Como se me complicaba un poco de esa forma hice lo siguiente:
en el form padre
Código Delphi [-]
hijo:=Thijo.Create(self);
hijo.newtop:=300;
hijo.showmodal;

hijo tiene la propiedad position=poMainFormCenter

y en el codigo del hijo:

Código Delphi [-]
Public
  newtop:integer
 
 
procedure Thijo.FormActivate(Sender: TObject);
begin
     if newtop<>0 then
       self.top:=newtop;
 
end;

Muchas gracias por la ayuda. Saludos


La franja horaria es GMT +2. Ahora son las 21:28:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi