Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Evento después de la creación de un control

Hola a todos:

Necesito ver la forma de saber cuando todos los controles de un formulario hayan sido creados.
Estuve leyendo sobre OnPaint pero no me sirve:

Cita:
OnPaint occurs before any controls on the form are painted.
Necesito algún método que se produzca después de haberse creado los controles.

Saludos...
__________________
No todo es como parece ser...
Responder Con Cita
  #2  
Antiguo 10-01-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Mira a ver el evento OnActiv del Formulario.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 10-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Primero que nada, gracias por tu interés nuevamente

Cita:
Empezado por vtdeleon
Saludos

Mira a ver el evento OnActiv del Formulario.
Los eventos se generan en este orden

1. OnCreate
2. OnShow
3. OnActivate
4. OnPaint

Por lo tanto el OnActivate está antes del OnPaint y por razones ya mencionadas los controles tampocos estarán disponibles.
A pesar de todo esto, lo que necesito hacer es básico como al momento de inicializarse un form mando a setear los controles (habilitado o deshabilitado, seteo de variables, color, etc..), es una función que tengo en otra unidad y le paso como parametro un tipo TForm y, por ende no puedo acceder a los controles de este form ya que aún sus controles no han sido creados..

Espero haberme explicado bien..

Hasta Luego -
__________________
No todo es como parece ser...

Última edición por lucasarts_18 fecha: 10-01-2006 a las 15:32:21.
Responder Con Cita
  #4  
Antiguo 10-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por lucasarts_18
Por lo tanto el OnActivate está antes del OnPaint y por razones ya mencionadas los controles tampocos estarán disponibles.
Que no estén pintados no significa que no estén disponibles. En condiciones normales, para cuando ocurre el evento OnCreate del formulario, ya todos los controles han sido creados.

Es posible que se presenten algunos problemas al asignar propiedades que dependan de que los controles ya sean visibles, pero en general puedes ajustar propiedades en el evento OnCreate.

// Saludos

Última edición por roman fecha: 10-01-2006 a las 03:56:19.
Responder Con Cita
  #5  
Antiguo 10-01-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por lucasarts_18
(...) el OnActivate está antes del OnPaint y por razones ya mencionadas los controles tampocos estarán disponibles. (...)
Creo que habría que tener en cuenta que es posible que los controles ya estén creados, pero no sean visibles aún. De hecho el evento "OnCreate" del formulario ocurre antes que el evento "OnShow", es decir, el formulario es creado antes de que se vea: ¡y parece lógico que sea así!

Cita:
Empezado por lucasarts_18
A pesar de todo esto, lo que necesito hacer es básico como al momento de inicializarse un form mando a setear los controles (habilitado o deshabilitado, seteo de variables, color, etc..), es una función que tengo en otra unidad y le paso como parametro un tipo TForm y, por ende no puedo acceder a los controles de este form ya que aún sus controles no han sido creados..
Cuando alguna vez he tenido el mismo problema que tú (función en otra unidad que recibe un formulario sobre el cual hay que llevar a cabo determinadas tareas en sus controles) he utilizado el evento "OnShow" del formulario. Pero, ojo, hay tareas que pueden llevarse a cabo también en el evento "OnCreate".

Desde luego hay tareas que no pueden llevarse a cabo en el evento "OnCreate" y sí en el evento "OnShow", pero, sinceramente, o estoy pensando en otra cosa o no sé porqué ahora mismo no puedo ir más allá en mi explicación, esto es, en la explicación del porqué de lo que trato de explicar. Y olé.

Edito: Ya Román se me ha adelantado y creo que lo ha explicado en menos palabras y mucho mejor que yo mismo.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 10-01-2006 a las 03:59:26.
Responder Con Cita
  #6  
Antiguo 10-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por roman
En condiciones normales, para cuando ocurre el evento OnCreate del formulario, ya todos los controles han sido creados.
Los controles estarán creados y me imagino que lógicamente el Formulario también o sino no podría contener esos controles, digo esto porque me sucede lo siguiente..

Código Delphi [-]
procedure TFrm_Clientes.FormShow(Sender: TObject);
begin
  DMMantenedores.MDOTbClientes.Open;
  Controles_Estado(True,Frm_Clientes);//Frm_Cliente está nil
end;

Puse un breakPoint y verifiqué el Frm_Clientes y marca nil...
y cuando llamo a esa rutina hay un momento que hago un Form.controlcount y presenta el problema típico de los objetos no creados aún..

Hasta Luego -
__________________
No todo es como parece ser...

Última edición por lucasarts_18 fecha: 10-01-2006 a las 04:54:42.
Responder Con Cita
  #7  
Antiguo 10-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En lugar de

Código Delphi [-]
Controles_Estado(true, Frm_Clientes);

yo pondría

Código Delphi [-]
Controles_Estado(true, Self);

Una cosa es que el objeto ya esté creado y otra que la variable (Frm_Clientes en este caso) ya tenga asignada la referencia a dicho objeto.

No sé si realmente ésta sea la causa del problema, pero sí te comento que los métdos de una clase (TFrm_Clientes) no deben hacer referencias a instancias particulares (Frm_Clientes).

En tu caso, desde el método TFrm_Clientes.FormShow estás tratando de acceder al objeto que se está mostrando, y éste no tiene, en general, porqué coincidir con la variable por defecto que Delphi (uno de sus malos hábitos) crea por defecto.

// Saludos
Responder Con Cita
  #8  
Antiguo 10-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por roman
En tu caso, desde el método TFrm_Clientes.FormShow estás tratando de acceder al objeto que se está mostrando, y éste no tiene, en general, porqué coincidir con la variable por defecto que Delphi (uno de sus malos hábitos) crea por defecto.
Este era el problema, caso resuelto, por cierto roman, muy clara tu explicación.
Gracias a todos

Nos vemos...
__________________
No todo es como parece ser...

Última edición por lucasarts_18 fecha: 10-01-2006 a las 15:33:33.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
evento click de bitbton en la creacion componente satabel Varios 2 02-09-2005 15:47:47
evento click de un bitbtn creacion componente satabel Varios 3 31-08-2005 16:02:37
eventos en objetos Nidia H. Ochoa OOP 4 27-02-2004 04:17:07
asignar evento a control creado dinamicamente jorgeganc Varios 4 17-12-2003 02:47:51
Evento MDIform despues de cerrar un formulario MDChild ing_alsaac Varios 3 02-06-2003 17:35:20


La franja horaria es GMT +2. Ahora son las 22:52:13.


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