Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Referencia A Objeto Con El Nombre En Una Cadena....
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Solo eso, tengo en una variable tipo string el nombre de un objeto (un boton), creado en tiempo de diseño.
y quiero cambiar la propiedad texto del mismo, (ojo, el objeto NO genera el evento, sino un proceso externo),
si me dan una mano lo agradeceria, probe con todo lo que se me ocurrio, y debo haber saltado algo basico
gracias
 



 
pantitas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Sería interesante que mostraras tu código para ver qué puede estar fallando. Lo que dices es posible hacerlo sin problemas, pero seguramente no estás guardando una referencia a ese objeto creado en tiempo de ejecución. Con ello me refiero a que deberías de almacenarlo en una variable a nivel de clase, o si son varios objetos, un array de dichos objetos también visible a nivel de clase.

También suele ser buena práctica, si el programa es muy grande, aislar la parte del código que da problemas en un miniprograma que sea funcional a pequeña escala. La mayoría de las veces, descubriremos por nosotros mismos el error tras esa práctica. Puede que no sea tu caso, pero me pareció oportuno comentarlo.

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: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Primero muchas gracias por responder,

lo que incruste en el codigo es lo siguiente

dim s as string
s="M1" // M1 es la propiedad Name del boton en cuestion para hacer la prueba
Me.Controls[s].Visible=true // Aqui funciona
Me.Controls[s].Text="123456" //Y esto no

Me da idea como que la propiedad text no esta disponible en la clase controles, pero no se como habilitarla
 



 
pantitas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Ahí lo que falla es la clase. Estás manipulando una clase que tiene propiedad visible y no tiene propiedad text. Dado que la clase button sí tiene ambas, habría que ver esa declaración del botón cómo está hecha. Explora la instancia creada. Lo mismo crees que es un botón y resulta que es otra cosa.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Efectivamente parece que no es posible acceder a la propiedad Text de un control de la manera que dices. Aunque la sintaxis es totalmente válida, creo que la razón por la que gambas no lo permite es porque no todos los controles tienen la propiedad Text, o Value, por citar otra...

La forma de hacerlo podría ser la siguiente:

'Declaramos el botón para crearlo en tiempo de ejecución
Private miboton As Button

Public Sub Form_Open()
    'instanciamos un nuevo botón y declaramos
    'el nombre del manejador de eventos con As "miboton"

    miboton = New Button(Me) As "miboton"
    ' inicializamos algunas propiedades
    With miboton
        .X = 50
        .Y = 50
        .Width = 200
        .Height = 24
        .Text = "Mi boton"
    End With

End

'declaramos el manejador de eventos del botón
Public Sub miboton_Click()
    'el código que vaya aquí se ejecutará
    'el pulsar el botón

    message.Info("Has pulsado mi botón", "Aceptar")

End

' este botón se ha creado en tiempo de diseño
' para poder probar el otro creado en tiempo de ejecución
Public Sub Button1_Click()
    'nos referimos al botón por su nombre de objeto
    
    miboton.Text = "Cambiamos el texto"
    
    'Parece que la forma que propones, aunque debería de ser válida
    'no funciona porque no existe la propiedad Text en la clase Control
    '
    'Me.Controls["miboton"].Text = "Esto producirá un error"

End
 


Espero haber despejado alguna duda, 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: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
A lo mejor tambien te puede valer hacer una comprobacion previa para saber si es un boton el objeto:

if Me.Controls[s] is  Button then
    Me.Controls[s].Visible=true
    Me.Controls[s].Text="123456"
endif


Saludos

Referencia en el gambasdoc: Enlace
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 31 Octobre 2013, 11:15; editado 2 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Muchas Gracias a todos, es verdad, la propiedad text no se puede modificar de esta forma    tube que cambiar el algoritmo para solucionarlo, se pierde un poco de velocidad, pero no es critico en el proyecto

gracias de nuevo
 



 
pantitas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Termine haciendolo asi:

PUBLIC SUB Form_Open()
DIM Rs AS Result
DIM i AS Integer
DIM t AS Integer
  bd.host = "192.168.2.110"
  bd.login = "jorge"
  bd.Password = "1234"
  bd.type = "mysql"
  bd.name = "Backup"
  bd.Open

Rs = bd.Exec("SELECT * FROM Mapa WHERE T='M'")
FOR t = 1 TO Rs.Count
   FOR i = 0 TO ME.Children.Count - 1
      IF ME.Children[i].Name = Rs!Codigo THEN ME.Children[i].Tag = Rs!ID
   NEXT
   Rs.MoveNext
NEXT
M1.Text = M1.Tag
M2.Text = M2.Tag
M3.Text = M3.Tag
M4.Text = M4.Tag
M5.Text = M5.Tag
...
M56.Text=M56.Tag
END


Pero no lo veo "Prolijo"  
Saludos
 



 
pantitas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Sigo pensando que el problema está en la creación de eso M1... M56. Sube el código de cómo lo haces.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia A Objeto Con El Nombre En Una Cadena.... 
 
Shordi, ese es justamente el punto, no son creados en tiempo de ejecucion sino en diseño, en tiempo de ejecucion no se presenta el problema...
Jorge
 



 
pantitas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Referencia De Controles Por Nombre shordi General 4 Martes, 17 Noviembre 2009, 21:15 Ver último mensaje
shordi
No hay nuevos mensajes ¿ Una Cadena Vacía Es Una Subcadena De C... Shell General 2 Jueves, 07 Agosto 2014, 14:01 Ver último mensaje
Shell
No hay nuevos mensajes ¿ Qué Ocupa Más ?. ¿ Array De Cadena O... Shell General 17 Jueves, 26 Noviembre 2015, 09:49 Ver último mensaje
Shell
No hay nuevos mensajes Crear Objeto Y Ponerlo Como El Objeto Supe... gambafeliz General 4 Martes, 23 Junio 2020, 07:29 Ver último mensaje
v3ctor
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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