|
Página 1 de 1
|
Recorrer Varios Controles (Solucionado)
Autor |
Mensaje |
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Recorrer Varios Controles (Solucionado)
Buenas, aquí volviendo de a poco a la programación. Estoy haciendo un programita donde necesito comparar valores entre diferentes variables por pares y en base a esto asignarlos un valor a los valuebox correspondeientes. Para el primer par uso el siguiente código
El tema es que este mismo código debo repetirlo para los 9 pares de valuebox.Y el tema no es escribirlo, sino hacer el código más corto y legible. Pensé en un bucle for pero no se me ocurre como implementarlo.
¿Alguna sugerencia? Gracias desde ya.
S.O. Ubuntu11.04
gambas 3
Gnome 2.32
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
última edición por Dani26 el Martes, 20 Septiembre 2011, 20:56; editado 2 veces
|
#1 Martes, 20 Septiembre 2011, 04:05 |
|
|
ahtonio
Programador
Registrado: Octobre 2009
Mensajes: 144
Edad: 58 Ubicación: Zaragoza
|
Re: Recorrer Varios Controles
Hola colega.
Yo creo que lo que necesitas es una función, dentro del mismo formulario a la que llamas para cada variable. Puedes usar la propiedad Tag de los controles (en este caso ValueBox) para saber que variable afecta a cada uno y recorrer todos en la colección Control (o Children) que tienen todos los Forms.
Espero te sirva como orientación.
Un saludo
|
#2 Martes, 20 Septiembre 2011, 12:58 |
|
|
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Re: Recorrer Varios Controles
Hola,
O esta
Para usarla
Public Sub Button2_Click()
tunombre(ValueBox3,ValueBox4,ValueBox7,ValueBox8)
End
Hay que añadir la gestión de errores.
Saludos
|
#3 Martes, 20 Septiembre 2011, 13:32 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Recorrer Varios Controles
Gracias compañeros, en la noche pruebo (ojo que tenemos 5 horas de diferencia horaria) y luego les cuento.
Saludos
Pd.Funciona ok el segundo ejemplo. Cuando lo complete subo el código modificado. Gracias.
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
última edición por Dani26 el Martes, 20 Septiembre 2011, 20:57; editado 1 vez
|
#4 Martes, 20 Septiembre 2011, 14:15 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Recorrer Varios Controles (Solucionado)Código Final
Amigos, aquí está como quedó el código final.
Private Function compara(campo1 As ValueBox, campo2 As ValueBox) As Integer
Dim estado As Integer = 0
If campo1.value = campo2.value Then
estado = 1
Else
If campo1.value > campo2.value Then
estado = 2
Else
estado = 3
Endif
Endif
Return estado
End
Public Sub asignar(campoE1 As ValueBox, campoS1 As ValueBox, campoE2 As ValueBox, campoS2 As ValueBox)
Select Case compara(campoE1, campoE2)
Case 1
campoS1.Value = "1"
campoS2.Value = "1"
Case 2
campoS1.Value = "3"
campoS2.Value = "0"
Case 3
campoS1.Value = "0"
campoS2.Value = "3"
End Select
End Sub
Public Sub Btnasignar_Click()
asignar(ValueBox1, ValueBox2, ValueBox3, ValueBox4)
asignar(ValueBox5, ValueBox6, ValueBox7, ValueBox8)
asignar(ValueBox9, ValueBox10, ValueBox11, ValueBox12)
asignar(ValueBox13, ValueBox14, ValueBox15, ValueBox16)
asignar(ValueBox17, ValueBox18, ValueBox19, ValueBox20)
asignar(ValueBox21, ValueBox22, ValueBox23, ValueBox24)
asignar(ValueBox25, ValueBox26, ValueBox27, ValueBox28)
asignar(ValueBox29, ValueBox30, ValueBox31, ValueBox32)
asignar(ValueBox33, ValueBox34, ValueBox35, ValueBox36)
End
Cómo verán los valuebox los nombre en orden, solo por una cuestión de organización. Y el código queda mucho màs corto y legible.
Saludos
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
|
#5 Miercoles, 21 Septiembre 2011, 13:58 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Recorrer Varios Controles (Solucionado)
Con perdón, de legible nada. ¿Qué es valuebox33? ¿y valuebox36? ¿y campoS1?
Leyendo el código es imposible saber qué hace y que deja de hacer.
¿Por qué no utilizas nombres significativos para las cosas?
Si el campoS1 contiene el nombre ¿Por qué no llamarlo CampoNombre (por ejemplo)? Si el valuebox contiene el salario del empleado ¿Por qué no llamarlo vbSalario? (vb te dice que es un ValueBox y salario lo que contiene.
En el momento que tengas que hacer cálculos con tus datos te vas a volver loco.
Valuebox1 = (valuebox2 * valuebox3 /2) - valuebox3 + campos2
Intenta destripar qué hace ese código dos años después de haberlo escrito...
Échale un vistazo a éste enlace, que no hay por qué seguir al pie de la letra, pero que todo aquél que se auto denomine "Programador" debería conocer: http://es.wikipedia.org/wiki/Notaci%C3%B3n_h%C3%BAngara
Es sólo un consejo de viejo programador...
=================== No podemos regresar
última edición por shordi el Miercoles, 21 Septiembre 2011, 17:49; editado 1 vez
|
#6 Miercoles, 21 Septiembre 2011, 17:47 |
|
|
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Re: Recorrer Varios Controles (Solucionado)
Hola Dani,
Coincido con shordi. Cuanto más claro mejor.
Pues si te vale así aún podemos "dar un golpe de tuerca" aprovechando el código de ahtonio. No se si te puede resultar útil o no, pero yo lo pongo.
De esta forma puedes añadir todos los values que quieras respetando el orden y de cuatro en cuatro sin tocar nada.
Saludos
última edición por ljma el Miercoles, 21 Septiembre 2011, 17:51; editado 1 vez
|
#7 Miercoles, 21 Septiembre 2011, 17:49 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Recorrer Varios Controles (Solucionado)
Citar: Es sólo un consejo de viejo programador...
Y muy sabio, sin duda. Sin intención de polemizar ni de justificarme paso a aclarar algunas cosas.
Los nombres por lo general( quizà sea una práctica algo masoquista) los cambio a medida que voy avanzando en el programa, luego de comprobar que todo funciona. En el caso particular de estos valuebox(podría llamarlos a lo sumo vbxx) no creo que lo haga porque un nombre descriptivo puede ser complicado, el orden en este caso particular me resulta màs ùtil.El botòn que "asigna" los valores se llama Btnasignar.
Los cálculos a realizar con éstos son solo los de la función, el valor de los pares dependen de la comparación entre los impares y nada más. Eso lo voy a ir comentando en él código para que se entienda, aparte ya me pasò con visual basic al tratar de actualizar un programa que no habia comentado, los nombres descriptivos de los controles si me ayudaron.
En cuanto a lo de más legible y claro. En comparaciòn con escribir la función para cada cuarteta de valuebox, me parece que sí. Pero ojo, es la impresiòn de un aficionado.
Lo de recorrer los controles con un for..each lo probé pero sin resultado alguno, en sí me parecía lo mejor pero no resolvía mi problema.
Agradezco todos los consejos y/o críticas.
Saludos de un aficionado a la programación con un estilo bastante caótico.
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
última edición por Dani26 el Miercoles, 21 Septiembre 2011, 23:56; editado 1 vez
|
#8 Miercoles, 21 Septiembre 2011, 22:50 |
|
|
|
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
|
|
|
|
|