Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2005
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Constructor

Hola a todos.

He tenido que crear un constructor en un formulario donde realizo una derie de operaciones. A su vez el mismo formulario tiene una serie de lineas de código en su evento OnCreate. Cuando llamo a ese constructor desde otro punto de la aplicación (que código se ejecuta primero , el del evento Oncreate ó el del constructor?

Saludos y Gracias de antemano
Responder Con Cita
  #2  
Antiguo 07-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Siempre se va a ejecutar primero el constructor, precisamente porque es el metodo que construye la clase y crea la instancia del objeto. Una vez creada la instancia existe la referencia a los eventos, la VCL utiliza el método AfterConstruction para ejecutar el OnCreate. ¿Te parece complejo probarlo?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 07-09-2005
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Hola Federico.
Bueno la verdad es que así lo creia yo, pero tengo un par de casos donde precisamente ocurre lo contrario.
El caso es que se asigna una consulta a la propiedad sql de un dataset en el evento OnCreate del formulario. Se realiza la misma operacion pero cambiando las condiciones de la clausula WHERE , esta vez en el constructor del formulario. El resultado de todo esto es que al llamar al constructor desde otro punto de la aplicacion, la consulta que toma el dataset es la del constructor ¿¿¿¿¿??????.
De momento no le encuentro explicación,pero creo que mis investigaciones no van por el camino adecuado. ¿Alguna idea?
Gracias de antemano
Responder Con Cita
  #4  
Antiguo 07-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Lo único que se me ocurre, que pueda variar, es que si la propiedad OldCreateOrder es True, cosa que no creo que hayas cambiado, el evento OnCreate se ejecutará cuando llames al constructor ancestro (dentro del constructor, inherited).

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 07-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Tal y como comenta Federico, la consulta que se ejecutará primero dependerá de como tengas especificada la propiedad "OldCreateOrder". Si esta propiedad está a "True" significará que primero se ejecutará la consulta especificada en el "OnCreate" y si está a "False" (por defecto) se ejecutará primero la del constructor de la clase.

Precisamente, la propiedad "OldCreateOrder", fue añadida para dar tiempo a que se ejecutaran todos los constructores de los componentes que posea un formulario antes de que se ejecutara la operación especificada en el "OnCreate" (Otra forma de que la operación en el constructor se ejecute primero es añadiendola antes de la sentencia "inherited", pero da problemas si haces uso de los componentes del formulario porque no das tiempo a inicializarlos).

Espero haberte aclarado algo!

Saludos!

Última edición por jmariano fecha: 07-09-2005 a las 17:35:48.
Responder Con Cita
  #6  
Antiguo 07-09-2005
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
kalimero, sólo para deslindar resposabilidades ¿qué versión de Delphi usas? El orden de creación creo que cambió a partir de la versión 4.

// Saludos
Responder Con Cita
  #7  
Antiguo 07-09-2005
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Bueno, en primer lugar gracias a todoas por las molestias.
Roman utilizo D7. La verdad es que me está sacando el tema un poco de sitio. Se que lo mejor es que publicara el código porque seguro que aclararia mejor las cosas, pero desgraciadamente y por causas ajenas no puede ser.
Venga, sigo a ver si lo saco
Gracias y saludos
Responder Con Cita
  #8  
Antiguo 07-09-2005
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
Bueno, comienza poniendo puntos de ruptura, uno en el constructor y otro en el OnCreate y ve donde para primero y qué exactamente pasa cuando pasa por el del OnCreate.

Por otra parte, aunque no puedas publicar el código podrías armarte un ejemplito mínimo para ver si se reproduce la situación y publicar eso.

// Saludos
Responder Con Cita
  #9  
Antiguo 07-09-2005
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Hola a todos.
Será posible, pues el tio ca..... habia puesto el "oldcreateOrder" a true.y por eso se ejecutaba antes el codigo del create ancestro.
Claro que yo no sabia de la existencia de dicha propiedad (jejeje).Bueno lo dicho gracias a todos por molestaros. Si de algo me alegro es que en esto de la programación todo tiene una explicación, nada de meigas y esas cosas.
Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 16:42:59.


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