Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Eventos De Controles Generador Por Código
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Eventos De Controles Generador Por Código 
 
Hola  a todos.
¿Como se hace para capturar los eventos de los controles un formulario que se crearon por código?
Estoy intentando capturar el evento producido por un ButtonBox que genero en un formulario mediante una clase de creación de controles pero no lo consigo.
Código de la clase que crea el control:

Public Sub _new(objControl As Object, strText As String, strType As String, Optional strTag As String, intNum As Integer, Optional strIcon As String, Optional stxComboList As String[])
  Dim intLst As Integer

  lbl1 = New Label(pnl1)
  With lbl1
    .Text = strText
    .Width = 200
    .Height = 24
  End With
     bto1 = New ButtonBox(pnl1) As "GButtonBox"
      With bto1
        .Width = 200
        .Height = 24
        .Name = "bto" & Str(intNum)
      End With

End

Public Sub GButtonBox_Click()
  Print "se ha clickeado el ButtonBox y el evento se capturó en la clase generatriz"
End

 

En el formulario he intentado capturar el evento del click del ButtonBox de la siguiente manera:
Public Sub bto3_Click()
  Print "se ha clickeado el ButtonBox y el evento se capturó en el formulario"
End

Public Sub GButtonBox_Click()
  Print "se ha clickeado el ButtonBox y el evento se capturó en el formulario"
End
 


Lo único que he obtenido es:
"se ha clickeado el ButtonBox y el evento se capturó en la clase generatriz"
Por lo tanto el evento no fue capturado en el formulario.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
Utiliza la propiedad Action
Más o menos así:
dim miboton as new button
miboton.heigh=28
miboton.width=120
miboton.text="loquesea"
miboton.Action="miboton"
....

end

Public sub Action_Activate(value as string) as String

select case value
case "miboton"
'...codigo que quiero poner
case "otrosconctrolesconaction"
end select

end

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
Shordi:
Vi esto mismo que explicas en un post que pusite antes, pero no logro hacer que funcione. Te paso el código a ver si a ti te sale, si tienes ganas y tiempo claro.
El problema es que la clase genera los controles y el evento lo quiero "observar" en el formulario donde los controles son creados.
Porque, por ejemplo la clase crea 10 buttonBox pero cuando haga click en cada uno de ellos quiero hacer cosas diferentes con cada uno.

Saludos.

basico2.tar.gz
Descripción:  
Descargar
Nombre del archivo: basico2.tar.gz
Tamaño: 33.82 KB
Descargado: 50 veces
basico2.tar.gz
Descripción:  
Descargar
Nombre del archivo: basico2.tar.gz
Tamaño: 33.82 KB
Descargado: 50 veces
basico2.tar.gz
Descripción:  
Descargar
Nombre del archivo: basico2.tar.gz
Tamaño: 33.82 KB
Descargado: 50 veces

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
Tincho:

Public Sub GButtonBox_Click()
  Print "se ha clickeado el ButtonBox y el evento se capturo en la clase generatriz"
End



Yo lo hago de la siguiente manera:
-Cuando creo el control, en la propiedad .tag guardo su referencia:
bto1 = New ButtonBox(pnl1) As "GButtonBox"
With bto1
.Width = 200
.tag=bto1  'guada la referencia del control en la propiedad tag
...


- Cuando se produce el evento click:

Public Sub GButtonBox_Click()
  Print "se ha clickeado el ButtonBox y el evento se capturo en la clase generatriz"
print last.tag 'de esta forma se cual es el control de los que estoy  observando, que se ha pulsado
....

End

 




===================
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: Eventos De Controles Generador Por Código 
 
He estado mirando tu proyecto y veo dos problemas distintos:

UNO:
El problema con el uso de Action_Activate (que no puede estar dentro de una clase, sino de un formulario) no es otro que el que hay controles compuestos, como buttonbox, que, a pesar de tener la propiedad en el IDE, no la tienen en funcionamiento.

¿Por qué? Porque todos los controles de usuario heredan de usercontrol, que incorpora la propiedad Action. Por otra parte, hay controles compuestos que contienen varios controles a su vez, incluyendo un formulario muchas veces como por ejemplo buttonbox, que tiene un textbox y un botón entre otras cosas... Es ese formulario el que observa el Action_Activate del botón que contiene... y no lo propaga a su propio contenedor (tu formulario).
Así, el evento Action, que aparece en el ide, no funciona, por cuanto el programador del control buttonbox no lo tuvo en cuenta. Siempre puedes pillar el código del buttonbox y activarle ese evento, no es difícil (aunque tal vez sea demasiada alforja para tan poco viaje, como se dice por aquí).

DOS
Creo que es erróneo ese enfoque en la clase tagbox:

Lo que tú quieres es añadir controles en tiempo de ejecución basados en los campos de una tabla ¿correcto?

La jerarquía que quieres crear, pues, es

    Formulario->Panelprincipal->[panel de campo->etiqueta->control del campo] ¿ok? (lo que va entre corchetes se repite por cada campo)

Para ello has creado una clase que crea esos controles pero esa clase no tiene lugar en esa jerarquía de controles. Es más, esa clase no es un control, por cuanto no hereda de ningún sitio... y no tiene sentido, por cuanto no tiene entidad propia, sólo "fabrica" controles pero no es nada en sí misma (no tiene propiedades ni métodos).

Lo que tú necesitas es una función (tal vez en un módulo) que te cree esos controles en el formulario. Sin clases intermedias ningunas.
Sería una función que, basándose en la definición de la tabla, genere los controles adecuados en el formulario que la llame.
Por otra parte, las acciones estándar de un formulario así creadas son conocidas: Grabar, Crear, Borrar, y Salir. No necesitas, pues, crear los botones en tiempo de ejecución, sabes perfectamente cuales son y qué deben hacer.

En el Programa Siesta que subí aquí hace tiempo tienes una formulario que hace eso exactamente. No está demasiado trabajado, quiero decir que, por ejemplo,  no busca si el campo es clave foránea de otra tabla para implementar la lista de valores y demás, dejando aparte que no me curré demasiado la estética     , pero no cuesta prácticamente nada añadirle esas funcionalidades.

Aunque no te guste o no te sirva, puede darte una idea de cómo veo yo el problema.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
shordi escribió: [Ver mensaje]
He estado mirando tu proyecto y veo dos problemas distintos..

Shordi, Antes de nada gracias por mirar el proyecto.
En el programara que había hecho antes para un cliente con bases de datos sqlite y postgresql use la creación de controles por código como dices en siesta, ya que me base en los conceptos que pusiste en practica en tu programa. y funciona muy rápido y hace lo que tiene que hacer. Hasta ahí todo fenómeno. Pero esto tenia la pega de que tenia que poner el código de creación de controles en cada formulario en el que quería crear los dichosos controles. si tenia que crear 10 formularios entonces tenia que "repetir 10 veces el mismo código" en el mismo proyecto, y si mas adelante era necesario hacer una modificacion, como por ejemplo usar el textbox de Tobias ExplainTextbox en lugar del TextBox ordinario tenia que tocar del código en 10 lugares en vez de uno solo.
Ahora estoy intentando hacer algo mas general, que me permita crear controles por código en cualquier formulario llamando una función en un modulo (desde este formulario). esto permitiría en teoría crear la "cajita" [ PanelHijo [ Label+TextBox ] ] que queda bien acomodada en un PanelPadre en este formulario, y es en este formulario donde me interesa poner el código y los botones para manejar registros.
También (es el motor de la idea) es interesante esa función de creación de controles para generar controles en un formulario que va a hacer otra cosa distinta como por ejemplo crear una base de datos, buscar archivos, crear una calculadora, cualquier cosa imaginable que necesite controles y siempre el código de "operación" del formulario lo pondría en el formulario. El problema es que para usar esos controles creados en el formulario mediante dicha función es necesario acceder a los eventos de estos y poder recuperar y escribir en ellos los valores que interesen al algoritmo del formulario.

[CeaControles] + [Formulario-0 + Algoritmo-0]
[CeaControles] + [Formulario-1 + Algoritmo-1]
[CeaControles] + [Formulario-2 + Algoritmo-2]
...
[CeaControles] + [Formulario-N + Algoritmo-N]

¿Hay alguna forma de observar los eventos de un control que esta anidado en un panel dentro de otro en un formulario?
(Ojo manteniendo el CreaControles fuera del formulario como Módulo.)

Formulario/PanelPadre/PanelHijo/Control
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
Julio, lo que propones funciona, pero tengo que poner el código de generación de controles en el mismo formulario, y es lo que me interesaría NO hacer. ya que busco independizar el código de creación de controles del código o algoritmo del formulario.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
Ok, pero a mí me suena algo disonante en lo que dices:
Quieres hacer el creador de los controles independiente de ningún formulario para llenar un panel de controles dentro de un formulario y observar los eventos de los controles creados fuera del formulario desde dentro del formulario...

Dos preguntas:

¿A tí no te suena eso retorcido?       

Y... ¿Sabías que un formulario puede contener otros formularios? Es decir: ¿por qué devolver un panel? ¿Por qué no devolver un formulario que es contenido por otro?

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
shordi escribió: [Ver mensaje]
Ok, pero a mí me suena algo disonante en lo que dices:
Quieres hacer el creador de los controles independiente de ningún formulario para llenar un panel de controles dentro de un formulario y observar los eventos de los controles creados fuera del formulario desde dentro del formulario...

Si es retorcido la verdad, pero no se me ocurre otra manera de crear controles por código sin tener que repetir este código en cada formulario que quiera crear controles.
Citar:

Y... ¿Sabías que un formulario puede contener otros formularios? Es decir: ¿por qué devolver un panel? ¿Por qué no devolver un formulario que es contenido por otro?

¿Eso en que cambiaría con respecto a los observa dores del formulario padre?
¿Estos "verían" los eventos de los controles del formulario hijo? En el método por panel no lo hacían.

Lo que yo no termino de entender es que si el control esta "pintado" en un formulario (sea nativo o creado por código) sea anidado dentro de un panel o dos ¿Esta o no esta en el formulario? Y si esta por que no puedo ver los eventos que genera.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eventos De Controles Generador Por Código 
 
Citar:
Si es retorcido la verdad, pero no se me ocurre otra manera de crear controles por código sin tener que repetir este código en cada formulario que quiera crear controles.


No tienes que repetir ningún código, tu código crea un panel que contiene controles, te propongo que hagas un formulario que contiene controles y controla eventos. Tu panel ha de ser incrustado en un formulario, lo que yo te propongo también ha de ser incrustado en un formulario ¿qué problema hay?

En fin, es tu programa. Sólo recordar que hay un principio que todos debemos tener presente a la hora de programar, el principio de -que nadie se me ofenda que es lo que los anglos dicen, no yo- KISS.
 




===================
No podemos regresar
 
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 ¿Como Puedo Crear Un Array De Controles M... ariel Controles/Librerías/Componentes 7 Lunes, 16 Noviembre 2009, 23:02 Ver último mensaje
soplo
No hay nuevos mensajes Eventos De Los Controles - Gambas3 JuanDiArdilaG General 3 Martes, 21 Julio 2015, 13:03 Ver último mensaje
jguardon
No hay nuevos mensajes Código Fuente De Gambas. Test De Controles Shell General 2 Jueves, 10 Enero 2019, 20:30 Ver último mensaje
Shell
No hay nuevos mensajes Crear Controles Por Código Shell General 1 Lunes, 11 Febrero 2019, 21:14 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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