Tema: Formularios
Ver Mensaje Individual
  #6  
Antiguo 26-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Ya que lo preguntas, Román, te tocó solucionarme la papeleta:
Que conste que no tengo Updates de Delphi 6 Empresarial instalados.

Pones un memo, un boton en Form1:

En el boton pones:
form2 := Tform2.create(application);

Creas un segundo formulario (Form2) y lo quitas de AutocreateForms

en Form2, hacemos una traza de los siguientes eventos:
- on create pones:form1.Memo1.lines.add('OnCreate '+Booltostr(form2 <> nil));
- on Activate pones:form1.Memo1.lines.add('OnActivate '+Booltostr(form2 <> nil));
- on show pones:form1.Memo1.lines.add('OnShow '+Booltostr(form2 <> nil));
- on paint pones:form1.Memo1.lines.add('Onpaint '+Booltostr(form2 <> nil));

Ejecutas y ves el resultado.

A mi me ha dado:
Código:
Oncreate false
OnActivate true
Onshow true
OnPaint true
Para mi significa que el evento Oncreate se hace para Tform2, y es lógico que Form2 todavia sea nil.

Pero probemos en un entorno MDI:
Form1 MDIform (el padre)
Form2 MDIChild

ejecutas el programa y me da esto:
Código:
Oncreate false
OnActivate false
Onshow false
OnPaint true
Hecho que me deja un poco groki.
Hasta que no se pinta, no se asigna a la variable Form2 ??

Sin embargo, creando el form2 con CreateForm, me sale todo a true en entorno MDI y en entorno SDI

He visto la implementación de CreateForm, y lo hace de una forma distinta a TcustomForm.Create.

Ya me contarás que te sale a ti.
Saludos
Responder Con Cita