Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Manejar eventos y validaciones en Controles dinamicos

Estas en el tema de Manejar eventos y validaciones en Controles dinamicos en el foro de Visual Basic clásico en Foros del Web. Hola a todos! Estoy trabajando en un proyecto de VB6 y en un formulario tengo un grupo de controles que se generan dinamicamente con los ...
  #1 (permalink)  
Antiguo 30/06/2008, 15:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 33
Antigüedad: 16 años, 8 meses
Puntos: 0
Manejar eventos y validaciones en Controles dinamicos

Hola a todos!

Estoy trabajando en un proyecto de VB6 y en un formulario tengo un grupo de controles que se generan dinamicamente con los que realizo determinados calculos, y necesito chequear los casos de cambio del contenido por el ususario (por ej: evento change ) y consecuentemente recalcular los resultados.

En definitiva no tengo idea como manejar los eventos de los controles dinamicos en VB6, (talvez con el uso de withEvents?)... Si alguien ha tenido alguna experiencia al respecto porfi: ayuda!!!

Desde ya muchas gracias !
Saludos
Cpcaba

Última edición por CPCaba; 01/07/2008 a las 15:30 Razón: Aclarar el mensaje
  #2 (permalink)  
Antiguo 02/07/2008, 08:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Manejar eventos y validaciones en Controles dinamicos

Cita:
Iniciado por CPCaba Ver Mensaje
Hola a todos!

Estoy trabajando en un proyecto de VB6 y en un formulario tengo un grupo de controles que se generan dinamicamente con los que realizo determinados calculos, y necesito chequear los casos de cambio del contenido por el ususario (por ej: evento change ) y consecuentemente recalcular los resultados.

En definitiva no tengo idea como manejar los eventos de los controles dinamicos en VB6, (talvez con el uso de withEvents?)... Si alguien ha tenido alguna experiencia al respecto porfi: ayuda!!!

Desde ya muchas gracias !
Saludos
Cpcaba
¿Cómo creas los controles dinámicos?. ¿Añadiendo a Me.Controls o usando Load?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 02/07/2008, 09:16
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Manejar eventos y validaciones en Controles dinamicos

Hola,algo asi???

Código:
Option Explicit
Private WithEvents MiPicture As PictureBox

Private Sub MiPicture_Click()
MsgBox "hiciste click en el picture creado"
End Sub

Private Sub Form_Load()
Set MiPicture = Controls.Add("VB.PictureBox", "MiPicture")
With MiPicture
.Visible = True
.top = top
.left = left
.Width = 500
.Height = 500
.BackColor = RGB(CInt(255 * Rnd), CInt(255 * Rnd), CInt(255 * Rnd))
End With
End Sub
saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #4 (permalink)  
Antiguo 02/07/2008, 12:21
 
Fecha de Ingreso: septiembre-2007
Mensajes: 33
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Manejar eventos y validaciones en Controles dinamicos

Seba123neo
... gracias! Me parece que eso es lo que estaba buscando, lo pongo en marcha y les cuento....
muchas gracias!!!
Saluditos
  #5 (permalink)  
Antiguo 02/07/2008, 12:46
 
Fecha de Ingreso: septiembre-2007
Mensajes: 33
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Manejar eventos y validaciones en Controles dinamicos

En respuesta a la pregunta de David.., en un bloque repetitivo voy creando en una variable (dim withevents ocontrol as textbox) una coleccion de textbox con Control.Add().

Ahora, el problema es que el evento ocontrol_change(), por ejemplo, lo ve en el ultimo elemento de la coleccion! y no contempla los eventos ocurridos en el resto de los textbox creados dinamicamente...
  #6 (permalink)  
Antiguo 02/07/2008, 12:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Manejar eventos y validaciones en Controles dinamicos

Según mi escaso conocimiento para que logres interceptar los eventos de cada uno de los TextBox debes declarar un nombre único para cada uno de ellos.
Las opciones que tienes es crear los textbox dinámicamente usando Load o asignando un nombre único para cada textbox añadido a Me.Controls...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 02/07/2008, 16:22
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Manejar eventos y validaciones en Controles dinamicos

Hola!

David tiene razón, la única forma de poder controlar eventos para controles creados dinámicamente es crear uno en tiempo de diseño con la propiedad Index a cero y agregar los demás con Load para poder utilizar el parámetro Index en sus eventos.

Visual Basic no permite crear un array de controles con WithEvents, estas dos instrucciones dan error directamente en el editor:
Código:
Dim WithEvents MiPicture(5) As PictureBox ' Array de 5 controles, por ejemplo
Dim WithEvents MiPicture() As PictureBox ' Array dinámico
y el objeto Collection, directamente no admite el modificador WithEvents.

Si utilizas el código que ha pasado seba123neo, y no cambias el nombre del control (MiPicture en el ejemplo), estás asignando cada nuevo control a la misma variable, por eso sólo te funciona el último control creado.
  #8 (permalink)  
Antiguo 03/07/2008, 18:35
 
Fecha de Ingreso: septiembre-2007
Mensajes: 33
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Manejar eventos y validaciones en Controles dinamicos

Chicos!! Muchas Gracias, tenian razon (me estaba complicando demasiado) finalmente resulto mas simple usando texbox indexados y generando el array dinamicamente con load... todo parece funcionar bien.
Mil gracias por la ayuda.....
Hasta la proxima...!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:36.