Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Creación De Un Componente: Orden En Que Se Disparan Los Eventos.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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...?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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...   
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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:
Export

Inherits TableView

Public Const _Properties As String = "*,conexion,sqlstring"

Property conexion As Connection
Property sqlstring As String

Private $conexion As Connection
Private $sqlstring As String

Public Sub fill_the_grid()
  
  $conexion.Exec($sqlstring)
  ...
  etc.
  ....
  
End

Public Function conexion_read() As Connection
  
  Return $conexion
  
End
Public Sub conexion_Write(Value As Connection)
  
  $conexion = Value
  
End

Public Function sqlstring_read() As String
  
   Return $sqlstring
  
End
Public Sub sqlstring_write(value As String)
  
   $sqlstring = value
   fill_the_grid()

End


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 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Ayuda En La Creación De Un Componente maikl Controles/Librerías/Componentes 7 Domingo, 01 Noviembre 2009, 18:09 Ver último mensaje
maikl
No hay nuevos mensajes Nuevos VideosTutoriales: Explicación Del ... jsbsan General 1 Miercoles, 22 Diciembre 2010, 18:34 Ver último mensaje
ivanovichenco
No hay nuevos mensajes Creación De Un Componente: Extendiendo Ga... shordi Aplicaciones/Fragmentos de Código 17 Viernes, 03 Junio 2016, 11:10 Ver último mensaje
shordi
No hay nuevos mensajes Orden De Operandos Shell General 2 Miercoles, 10 Octobre 2018, 12:37 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron