Visual Basic - tipo de control

Life is soft - evento anual de software empresarial
 
Vista:

tipo de control

Publicado por rafa (39 intervenciones) el 01/04/2003 11:54:11
Hola .
Me gustaria hacer lo siguiente:
Tengo un formulario en VB6 con unos pocos de controles textBox,ComboBox,listview,.....
Bueno, yo puedo obtener los controles a traves de la colección Controls, pero me gustaria identificar un objeto de esta coleccion cuando es un textbox.
Mi pregunta es:
¿Como distingo un objeto textbox de otro?
Para obtener los controles hago lo siguiente:

dim Obj as Object
for each obj in Form.controls
//AQUI QUIERO SABER COMO SABER QUE OBJ TIENE UN TEXTBOX
next

Gracias.
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

tipo de control

Publicado por J2ML (464 intervenciones) el 01/04/2003 15:05:45
Bueno a lo mejor no es la solución mas técnica (incluso creo que una vez yo ví el como saber a que clase pertenecía un objeto o control), espero te sirva:
1.- Primero deberás normalizar todos los nombres de tus controles del ormulario por ejemplo: los textbox se llamarán TXTnombre, TXTcedula, TXTdirecccion, las etiquetas se llamarán LBLnombre, LBLcedula, LBLdireccion, los listview podrían ser LVWdatos, los picturebox PICfoto, PICdocumento, y así sucesivamente.
2. Luego en tu ciclo preguntas (en este ejemplo) por los primeros 3 caracteres del nombre el objeto solicitado es decir:
dim Obj as Object
For each Obj in Form1.Controls
Select case Left(Con.Name,3):
Case "TXT":
MsgBox "Es una caja de texto"
Case "LBL":
MsgBox "Es una etiqueta"
Case "LVW":
MsgBox "Es un control ListView"
Case "PIC":
MsgBox "Es un control Picture"
Case Else:
Msgbox "Formato de control no sido definido"
end Select
Next Obj
3.- Espero te sirva...

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

No se hace así

Publicado por Esteban (1144 intervenciones) el 01/04/2003 20:40:07
Para identificar un objeto entre una colección es mediante esto:

var = TypeName(obj)
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

¿ Obligatoriamente ? o convenientemente

Publicado por J2ML (464 intervenciones) el 02/04/2003 16:04:19
EL objetivo era obetener el tipo de objeto creo (no recuerdo) que en la nota anterior denote que no me acordaba del comando específico, CLARO el var = TypeName (Obj) funciona muy bien. PERO no necesariamente un se debe hacer así porque:
1.- Se puede emplear el métod que exprese en la primera respuesta que como dije es algo vano pero funciona.
2.- Se emplea el TypeName el cual es conveniente pero creo que la pregunta inicial era como saber si un objeto era un TextBox
3.- Se puede emplear también un:
If TypeOf Obj ="TextBox"
'Rutina en caso de caja de texto
End if
4.- Ahora el expresar cual de las tres soluciones es la correcta, obligatoria ó conveniente eso dependerá del programador. (Si lo llevamos al extremo me inclino a pensar que la del TypeOf es más efectiva porque no utiliza variables ni líneas de código adicionales).
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

Es bueno investigar, para ver cual es la verdad

Publicado por Esteban (1144 intervenciones) el 02/04/2003 19:56:53
Tu respuesta como dices no es mala pero válida, sí y solo sí, uno tiene un bien estándar definido, pero no es correcto.

El TypeOf aplica para otros lenguajes no para VB, o al menos no le he visto, quisiera que me lo expliques.
A mí me lanza este error:
"Expected: line number o label or statement or end of statement".
Yo siempre antes de dar una respuesta primero refresco conocimiento y luego escribo, te aconcejo que lo hagas tú también.

Por lo tanto después de quebrarme la cabeza con validaciones de controles para permisos y edicion he comprobado que por excelencia el TypeName es el más cómodo y por lo tanto el más conveniente de utilizar.
Además el TypeName tampoco utiliza variables ni líneas adicionales.
Por ejemplo:
if TypeName(obj) = "TextBox" then
'Rutina en caso de caja de texto
End if

TE QUEDÓ CLARO????????????
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