|
Página 1 de 1
|
Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Autor |
Mensaje |
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Suponed que tenéis un componente que hereda de Listbox o Combobox, con las propiedades Conexion, tabla, campo a mostrar y clave a devolver.
Tiene un método que usando la conexión lee la tabla y rellena la lista.
Este método se dispara cuando cambias la tabla, por ejemplo, es decir en el Método tabla_write() lanzas rellenar().
Esas propiedades te aparecen en el IDE en tiempo de diseño y todo parece guay del paraguay.
Pero resulta que cuando ejecutas tu programa el compilador alimenta la propiedad tabla antes que la propiedad conexion.
Eso dispara la consulta contra una conexión inexistente y casca.
La pregunta es ¿Cómo se puede establecer la prioridad de procesar las propiedades al instanciar el objeto?
Saludos.
|
#1 Jueves, 02 Octobre 2014, 19:20 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Shordi:
Citar:
Pero resulta que cuando ejecutas tu programa el compilador alimenta la propiedad tabla antes que la propiedad conexion.
Eso dispara la consulta contra una conexión inexistente y casca.
Y si le pones un try, para ver si se produce un error, y si es asi , que haga la conexión para que pueda continuar correctamente...?
|
#2 Jueves, 02 Octobre 2014, 19:48 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Citar: , que haga la conexión para que pueda continuar correctamente...?
No puede hacerla por cuanto no se ha alimentado aún esa propiedad...
|
#3 Jueves, 02 Octobre 2014, 19:51 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Shordi:
Citar: por cuanto no se ha alimentado aún esa propiedad..
Lo de "alimentado" ¿eso que es?
|
#4 Jueves, 02 Octobre 2014, 20:05 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Citar: Lo de "alimentado" ¿eso que es?
Terminología informática manchega... (en la lista de correo de gambas también me han calentado las orejas por mi manchegismo tecnócrata)
Me refiero a que el compilador no ha ejecutado aún los métodos _write the la propiedad. Tú pones los valores en el IDE en tiempo de diseño, pero ¿En qué orden los procesa en tiempo de ejecución? y ¿Se puede cambiar dicho orden?
Pongo aquí el código de ejemplo que he puesto en la mentada lista:
Si se ejecuta sqlstring_write antes que conexion_write, fill_the_grid genera un error.
Lo más curioso es que a veces funciona bien y a veces no. Si añado controles al form, o si modifico el tamaño o si lo que sea, de repente va bien, vuelvo a modificar y de repente va mal....
última edición por shordi el Jueves, 02 Octobre 2014, 22:03; editado 2 veces
|
#5 Jueves, 02 Octobre 2014, 22:00 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Me han contestado por la tangente: No se sabe, pero ¿qué mas da si, al fin y al cabo, hay que controlar si las propiedades son correctas? El usuario del componente siempre puede cambiar vía código dichas variables y cometer ahí el error, o puede perder o borrar la base de datos, o lo que sea.
Aún así creo que habría que poder controlar ese orden de "alimentación" (manchegus sum) de las propiedades en el momento de instanciar una clase.
Saludos.
|
#6 Jueves, 02 Octobre 2014, 22:46 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|