Visual Basic - Validar objetos, existen o no en la forma

Life is soft - evento anual de software empresarial
 
Vista:

Validar objetos, existen o no en la forma

Publicado por Ralph Moran (4 intervenciones) el 01/03/2007 00:12:48
Primero que algo, les felicito por la gran comunidad que hoy tienen y la gran dedicacion en ayudar a los que somos mas novatos que cualquiera.

Bueno, estoy empezando con VB 6.0 por necesidad dado que me lo estan pidiendo. En fin, si es posible me pudieran orientar en los siguiente:

Hay alguna funcion, metodo o procedimiento para verificar si un objeto esta dentro del formulario?

Algo asi como: CheckBox1(0), CheckBox1(1), CheckBox1(N) ...
y que en algun momento el index 5 del CheckBox1 ( CheckBox1(5) ) no se encuentre. Como verificar esto incosecutividad?

Realice una funcion que recorre todo el index de CheckBox1(n).Value, simple con un ciclo, pero la consecutividad del indes (1,2,3,4,6, ...) se rompe por que yo elimine el CheckBox1(5) en tiempo de ejecucion.

Algun consejo para que mi programa no truene al llegar a esta parte?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Validar objetos, existen o no en la forma

Publicado por The Emulator (96 intervenciones) el 01/03/2007 01:42:36
Hola

Se me ocurre una forma de hacer lo que quieres y te la explico con un ejemplo.

Primero crea un formulario y en el coloca una matriz de CheckBox como la que tienes (Que se llame CheckBox1(X) Como en tu problema), ahora borra cualquiera de los elementos(control) de esa matriz, luego coloca un boton y el siguiente codigo para este

Private Sub Command1_Click()
Dim MiControl As Control
For Each MiControl In Me.Controls
If MiControl.Name = "CheckBox1" Then
MiControl.Value = 1
End If
Next
End Sub

Ahora ejecutalo y mira que pasa :)

Como veras en el codigo del boton estamos cambiando la propiedad value del control a 1 osea vamos a activar(Marcar) el CheckBox.

El codigo no se basa en recorrer la Matriz del Checkbox asi que por eso no tendremos el problema de si el elemento X de esta matriz existe o no, lo que hace el codigo es recorrer todos los controles que se encuentren en el formulario ya sean botones cajas de texto imagenes etc................... y simplemente miramos el NOMBRE del control activo en el ciclo asi que siempre que se encuentre un control que se llame CheckBox1 (Recuerda que al ser una matriz de conroles todos van a tener el mismo nombre lo unico que los difrencia es la propiedad Index) asignamos a la propiedad Value el valor de 1, asi que sin importar cuantos CheckBox1 existan o si falte alguno en la matriz podras manipularlos a todos.

Espero esto sea lo que necesites.

Saludos
http://www.theemulator.tk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por Benjo (679 intervenciones) el 01/03/2007 02:59:25
Una matriz de controles devuelve siempre en su metodo Count el número de indices
con recorrerlos con un for Next, detectarías el faltante con un controlador de errores On Error
Ante el primer error saldrías de la rutina For Next, y efectuarías la operación que necesites.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por The Emultor (96 intervenciones) el 01/03/2007 03:19:03
Hola

Pero debes analizar un poco mas el problema Benjo ya que la idea es que se deben efectura operaciones sobre todos los elementos de la matriz y si se usa un manejador de errores lo unico que estarias haciendo es mirar donde falta un elemento para no seguir haciendo nada mas, supongamos que tienes 5 elementos en la matriz y que falta el elemento 3 si usas el manejador de errores cuando se llegue al elemento 3 se sale del ciclo, pero y que pasa con los demas indices que habian?, donde que da el 4 y el 5???? no se efectuaria ninguna operacion sobre ello y la ideas es aplicar algo a todos.

Saludos
http://www.theemulator.tk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por Benjo (679 intervenciones) el 01/03/2007 04:05:57
Me extraña profesor.
La sola utilización de una rutina de tratamiento de errores no implica abandonar la operación, sino tratarla y regresar con la solución correcta si es que el programador lo entiende necesario.

Para ello es que existe GoSub y Return.

Es cierto que algunos puristas le escapan a estas funciones, y más cierto es que tales funciones han sido en parte las que le han hecho mala fama a Visual Basic, pero más de uno ha debido recurrir a ellas, porque no son mas que la resultante de un tratamiento alternativo de decisiones.

Eso es lo que le propongo a Morán, que trate su problema como un error, que lo soluciones y vuelva si es necesario, o bien si sólo lo tiene que saltear para que no le ocasione un error la aplicación, con poner un Resume Next es suficiente.

Fijate en la consulta de Morán, que dice textualmente

"Como verificar esto incosecutividad?" y "Algun consejo para que mi programa no truene al llegar a esta parte?"

Bueno, para que no se cuelgue (truene) la rutina de tratamiento de errores es lo correcto, y para verificarlo, primero tiene que advertirlo sin que se cuelgue (truene), para lo cual una rutina de tratamiento de errores es valida.

Tu ejemplo es sumamente claro y válido en cuanto a operar con los controles existentes sin depender de la matriz, pero esa rutina de recorrer los controles, no te advierte al programador sobre la falta de algun indice de la matriz.

Igualmente, de acuerdo a como enfoque el problema Moran alguna de nuestras respuestas o ambas han de servirle seguramente.

Un gusto haber comparado opiniones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por The Emulator (96 intervenciones) el 01/03/2007 14:25:26
Hola Benjo

Lo de profesor lo dejo de lado ya que sin importar cuanto llevemos estudiando un lenguaje nunca seremos expertos.

Como sabemos la idea de un foro es exponer los puntos de vista de cada uno asi que no hay problema, lo del mensaje que escribi lo hize fue porque con la idea que expusiste digamos que estaba algo incompleta y si Ralph no conoce lo del manejo de errores estoy seguro que llegaria a lo mismo que dije yo de que pasa con los demas indices despues de que no se encuentra uno, pero con el complemento que das en tu ultimo mensaje ya queda mas claro.

Saludos
http://www.theemulator.tk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por Ralph Moran (4 intervenciones) el 01/03/2007 16:04:55
Les agradezco su ayuda a todos, en verdad.

Es verdad que necesito verificar TODOS los index de mi objeto CheckBox y tambien evitar que haya problemas para que se cuelgue mi programa. Me comenta un compañero que usar On Error Resume Next es de las funciones mas criticadas de la red, que es basura y de nada te saca de problemas, asi que manejar los errores son saltos a etiquetas es lo mas conveniente solo que me falta terminar de checar TODA la matriz del index.

Gracias por su pronta respueta camaradas.

Ahora algo muy importante, PARA LA PERSONA QUE TOMO MI NOMBRE: NO ESTOY DE ACUERDO EN QUE SE HAGAN PASAR POR OTRAS PERSONAS ASI SEA PARA BIEN, MUCHO MENOS PARA MAL.

El post que textualmente dice:

"Vale maestros, ¿y si dejais de discutir y me dais una solucción?
Agradecido "

NO LO HE PUESTO YO RALPH MORAN, por la simple razon que no he usado la lengua de castilla.

Una recomendacion para los webmasters del sitio, vamos a encontrar una manera de validar que realmente sea el usuario que esta posteando.

Hasta pronto.

ralph moran
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por Benjo (679 intervenciones) el 01/03/2007 20:00:45
TheEmulator, no fue mi intención ofenderte en lo absoluto, lo de profe no fue en sorna, fue en serio.
He leido muchos de tus post y sos bastante didáctico en cuanto a tus exposiciones.
Tambíén es cireto que me quedé corto en mi primer post, y que di por sentado mucho. Trataré de corregirlo.

Y opino igual que vos en cuanto a que los foros son para debatir ideas, y es por eso que te manifesté que me dio mucho gusto poder hacerlo en este caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar objetos, existen o no en la forma

Publicado por The Emulator (96 intervenciones) el 02/03/2007 01:14:02
Hola

Disculpa Benjo pero el ultimo mensaje no lo escribi yo.

********************************** YO NO ESCRIBI ESTO ***************************************
"No me ofendiste en absoluto. Creo que tu mentalidad no llega a la mitad de la mia.
Y cuando dije que los foros son para debatir ideas no me refería a que se contestara cualquier cosa, sino para que sea didáctico.

Espero que, como dices, trates de corregirlo a partir de ahora."
********************************** YO NO ESCRIBI ESTO ***************************************

Como veras alguien esta usando los Ninck de los demas para insultar a otros en el foro.
Lo mismo le hicieron a Ralph Moran

Saludos
http://www.theemulator.tk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

YO NO ESCRIBI ESE MENESAJE

Publicado por The Emulator (96 intervenciones) el 02/03/2007 01:15:33
Hola

Disculpa Benjo pero el ultimo mensaje no lo escribi yo.

********************************** YO NO ESCRIBI ESTO ***************************************
"No me ofendiste en absoluto. Creo que tu mentalidad no llega a la mitad de la mia.
Y cuando dije que los foros son para debatir ideas no me refería a que se contestara cualquier cosa, sino para que sea didáctico.

Espero que, como dices, trates de corregirlo a partir de ahora."
********************************** YO NO ESCRIBI ESTO ***************************************

Como veras alguien esta usando los Ninck de los demas para insultar a otros en el foro.
Lo mismo le hicieron a Ralph Moran

Saludos
http://www.theemulator.tk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:YO NO ESCRIBI ESE MENESAJE

Publicado por Benjo (679 intervenciones) el 02/03/2007 02:58:46
Ok
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar