Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
TypeName
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje TypeName 
 
Hola Comunidad!.

Hay una función en VB que devuelve en una cadena (que no un entero) el tipo de variable u objeto que es algo:
Ejemplo:

Dim nombre As String
Dim tipo As String

tipo = TypeName(nombre)
Debug.Print tipo
 

En ese caso devolvería String.

Dim tipoobjeto As String

tipoobjeto = TypeName(Me.Command1)
Debug.Print tipoobjeto
 


En ese caso daría CommandButton.

Imaginar que tenemos un formulario con diferentes componentes u objetos
y quisiéramos que una vez que identifica el tipo de objeto se hiciera una acción.

Un caso simple, para un tipo botón.
DIM objeto AS Object

FOR EACH objeto IN ME.Controls
  IF objeto IS Button THEN PRINT "Es un botón"
NEXT  
 


Y si quiera usar esto, por lo visto no es posible en gambas.

Dim objeto As Object

For Each objeto In Me.Controls
    Select Case TypeName(objeto)
        Case "CheckBox"
             objeto.BackColor = vbBlue
        Case "TextBox"
             objeto.BackColor = vbGreen
        Case "CommandButton"
             objeto.BackColor = vbYellow
    End Select
    Debug.Print "El objeto es un: " & TypeName(objeto)
Next
 


Lo que seria una manera de abreviar la sentencia IF.
A lo mas que he llegado es hacerlo con un grupo de IF.

¿ Hay alguna manera "breve" o sentencia ademas de TypeOf  en gambas ?.


Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: TypeName 
 
Hola,

Borrado. No funciona.

Saludos
 



 
última edición por ljma el Miercoles, 07 Marzo 2012, 14:19; editado 4 veces 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: TypeName 
 
Este trozo de código puede ayudar adaptándolo a tus necesidades:

PUBLIC SUB btnQuick_Click()     'toggle button

    DIM hCtl AS Control

    FOR EACH hCtl IN FMain.Controls
        IF hCtl IS TextBox OR hCtl IS ComboBox OR hCtl IS CheckBox OR hCtl IS ValueBox OR hCtl IS Button THEN
            IF hCtl.Tag = "exclude" THEN
                IF btnQuick.Value = TRUE THEN
                    hCtl.Enabled = FALSE
                    txtRSTe.ForeColor = Color.DarkGray
                    txtRSTr.ForeColor = Color.DarkGray
                ELSE
                    hCtl.Enabled = TRUE
                    txtRSTe.Text = ""
                    txtRSTr.Text = ""
                    txtRSTe.ForeColor = Color.Black
                    txtRSTr.ForeColor = Color.Black
                ENDIF
            ENDIF
        ENDIF
    NEXT

END


Básicamente comparas si cada instancia de los controles del formulario es de una clase determinada (no de qué tipo), mediante la instrucción IS.

Dependiendo en qué casos, TypeOf puede servir, ya que devuelve una constante de valor numérico correspondiente al tipo de dato u objeto. No sirve en este caso porque siempre devolvería el valor entero 16, que corresponde a la constante gb.Object.


Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: TypeName 
 
Gracias a los dos.

Jesús:

Es algo mas laborioso así.

Por eso el problema de con TypeOf no me valía para los objetos. Es una constante que siempre devuelve el valor 16.


Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron