• Domingo 22 de Diciembre de 2024, 13:27

Autor Tema:  controles en tiempo de ejecucion  (Leído 4780 veces)

aitord

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
controles en tiempo de ejecucion
« en: Lunes 27 de Abril de 2009, 17:00 »
0
hola.
necesito una ayuda. pego parte del codigo:
en resumen, dentro de un grupo creo radiobuttons con el " codigo de cliente".. si tengo 23 clientes me crea 3 hasta ahi bien...

mi problema radica, en controlar eventos cuando pulsa un radiobutton u otro ... no se que evento se dispara, ya que el control se crea en ejecucion.

grupo = New System.Windows.Forms.GroupBox
'' radio = New System.Windows.Forms.RadioButton
grupo.Location = New Point(385, 2)
grupo.Size = New Size(413, 127)
grupo.Text = "Codigo Cliente"
Controls.Add(grupo)

Dim m As Int32 = 3
Dim n As Int32 = 16
Dim Radio(xreg) As System.Windows.Forms.RadioButton
'
For i As Int32 = 1 To xreg
Radio(i) = New RadioButton
Radio(i).Top = n
Radio(i).Left = m
Radio(i).Text = fila("codcliente")
Radio(1).Checked = True
Radio(i).Width = 60
Radio(i).Height = 17
grupo.Controls.Add(Radio(i))
fila.Read()
m = m + 96

If i = 4 Then m = 3 : n = 39
If i = 8 Then m = 3 : n = 62
If i = 12 Then m = 3 : n = 85
Next

javierkcjm

  • Miembro activo
  • **
  • Mensajes: 48
  • Nacionalidad: ec
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #1 en: Lunes 27 de Abril de 2009, 19:46 »
0
hola amigo,

lo que creo que queires hacer es poner varios button y que cada uno represente a un cliente y dar click en uno de ellos y asi ejecutar acciones para ese cliente,

si es asi debes agregar eventos, agrega esta linea antes de el for
Dim evento As New EventHandler(AddressOf clickrb)

luego pones esta linea dentro del for despues del grupo.controlls.add()
AddHandler Radio(i).Click, evento

y luego creas una procedimiento llamado clickrb

Private Sub clickrb(ByVal sender As System.Object, ByVal e As System.EventArgs)
        MsgBox(CType(sender, RadioButton).Text)
    End Sub


con esto cada vez que des click en un radio button te mostrata el text que tiene

espero haberte ayudado

saludos cordiales

JC

aitord

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #2 en: Martes 28 de Abril de 2009, 10:06 »
0
gracias. lo tengo.

aitord

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #3 en: Martes 28 de Abril de 2009, 11:15 »
0
hola.
solo me falta un detalle, me funciona el evento siempre que pulso el radiobutton. pero necesito que vaya la primera vez tambien, es decir,
1.- creo los radiobutton en tiempo de ejecuccion,
2.- le asigno handler correspondiente.
3.- necesito que pase por el evento sin pulsar el radiobutton la primera vez.

no se si me explico ... gracias de todas formas.

 Private Sub radioX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Checked = True Then
        endif

javierkcjm

  • Miembro activo
  • **
  • Mensajes: 48
  • Nacionalidad: ec
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #4 en: Martes 28 de Abril de 2009, 15:37 »
0
hola,

en este ejemplo que te di se ejecuta por primera vez sin dar click en el radio button si quieres prueba poniendo un mensaje y veras que se ejecuta una 1 vez al iniciar el programa

saludos cordiales

JC

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #5 en: Martes 28 de Abril de 2009, 17:40 »
0
De todas formas puedes llarmarlo desde código, por ejemplo durante la carga del formulario dentro del 'load'.
«Ma non troppo»
----> ModoVacaciones = False<----

aitord

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #6 en: Martes 28 de Abril de 2009, 20:10 »
0
lo siento pero no lo veo, al evento va cuando selecciono otro radiobutton, es decir, cada vez que me muevo por los radiobuttons, asigno a un textbox un nombvre distinto. menos la primera vez, que teniendo selecionado el primer rabiobutton, el textbox esta vacio.

si le llamo en el load, como lo puedo hacer.

gracias. a todos.

                        For i As Int32 = 1 To xreg
                            Radio(i) = New RadioButton
                            Radio(i).Top = n
                            Radio(i).Left = m
                            Radio(i).Text = fila("codcliente")
                            Radio(1).Checked = True
                            Radio(i).Width = 60
                            Radio(i).Height = 17
                            grupo.Controls.Add(Radio(i))
                            fila.Read()
                            m = m + 96

                            If i = 4 Then m = 3 : n = 39
                            If i = 8 Then m = 3 : n = 62
                            If i = 12 Then m = 3 : n = 85
                            Dim evento As New EventHandler(AddressOf radioX_CheckedChanged)

                            'ASIGNAMOS EL HANDLER Y TODO LISTO
                            AddHandler Radio(i).CheckedChanged, evento

                        Next


 Private Sub radioX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

        MsgBox(CType(sender, RadioButton).Text)
end sub

javierkcjm

  • Miembro activo
  • **
  • Mensajes: 48
  • Nacionalidad: ec
    • Ver Perfil
Re: controles en tiempo de ejecucion
« Respuesta #7 en: Martes 28 de Abril de 2009, 23:53 »
0
Citar
lo siento pero no lo veo, al evento va cuando selecciono otro radiobutton, es decir, cada vez que me muevo por los radiobuttons, asigno a un textbox un nombvre distinto. menos la primera vez, que teniendo selecionado el primer rabiobutton, el textbox esta vacio.

si le llamo en el load, como lo puedo hacer.
amigo, en primer lugar dentro del for no debe ir la declaracion del evento ya que cada vez estas declarando un nuevo evento que es el mismo, debes ponerlo fuera del for
Citar
Dim evento As New EventHandler(AddressOf radioX_CheckedChanged)
For i As Int32 = 1 To xreg
Radio(i) = New RadioButton
Radio(i).Top = n
......


ahora el evento no debe ser declarado para el evento checkedchanged ya que cada vez que el control cambia de estado se ejecuta el evento, ahora analiza cuando pasas de un radiobutton a otro radiobutton el estado cambio para esos 2 controles es decir se ejecuto el evento 2 veces 1 por cada control, lo optimo es realizar el evento para el evento click
Citar
'ASIGNAMOS EL HANDLER Y TODO LISTO
AddHandler Radio(i).CheckedChanged, evento
debes poner  
AddHandler Radio(i).Click ,evento

realiza estos cambios y veras que se ejecuta por primera vez el evento para el primer radio,

saludos cordiales

JC