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