Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ayuda Con Controles
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Ayuda Con Controles 
 
Hola a todos.
Soy nuevo en este foro y en este mundillo de la programación en Gambas.
Estoy intentando pasar a gambas un programa que hice en VB6.
Mi consulta es la siguiente. Dado que en gambas no existen los arrays de controles, ¿cómo podría simplificar este tocho? :

Label1.Text = Settings["opciones/value[" & 0 & "]"]
Label2.Text = Settings["opciones/value[" & 1 & "]"]
Label3.Text = Settings["opciones/value[" & 2 & "]"]
Label4.Text = Settings["opciones/value[" & 3 & "]"]
Label5.Text = Settings["opciones/value[" & 4 & "]"]
Label6.Text = Settings["opciones/value[" & 5 & "]"]
Label7.Text = Settings["opciones/value[" & 6 & "]"]
Label8.Text = Settings["opciones/value[" & 7 & "]"]

En VB es relativamente sencillo con arrays:

For T = 1 To numop
Label1(T).Caption = GetINIString(App.Path & "\opciones.ini", "opciones", "value" & T - 1, "?")
Next T

Pero en gambas no encuentro la manera de hacer esta simplificación.
He leído acerca de grupos de controles y de manejo con su propiedad TAG pero la verdad no me aclaro mucho .
Y hacerlo con bases de datos SQlite, me resulta casi imposible por mi nivel de conocimientos (más bien bajos).

Agradecería que alguien me echase una mano.
Gracias anticipadas.
 



 
kitoko - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ayuda Con Controles 
 
Hola kitoko. Bienvenido.

Te subo un ejemplo. El array de controles es sencillo.

 botones

La propiedad tag es el indice del botón en este ejemplo. Como ves el código es común a todos los botones.
Observa la propiedad grupo que el nombre es el mismo. Cuando estas editando el formulario puedes seleccionar varios botones y
asignar el mismo valor en la propiedad común "grupo" a todos los botones.

Y la variación de tag para indicar el indice de cada botón.

Ahora va mi pregunta para los foreros. ¿ Cómo se puede asignar un grupo desde código ?.  

Saludos

array_controles.tar.gz
Descripción:  
Descargar
Nombre del archivo: array_controles.tar.gz
Tamaño: 5.76 KB
Descargado: 29 veces
array_controles.tar.gz
Descripción:  
Descargar
Nombre del archivo: array_controles.tar.gz
Tamaño: 5.76 KB
Descargado: 29 veces
array_controles.tar.gz
Descripción:  
Descargar
Nombre del archivo: array_controles.tar.gz
Tamaño: 5.76 KB
Descargado: 29 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Jueves, 27 Marzo 2014, 14:39; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ayuda Con Controles 
 
Shell escribió: [Ver mensaje]

Ahora va mi pregunta para los foreros. ¿ Cómo se puede asignar un grupo desde código ?.


Podemos asignar uno o más objetos a través de código para un único grupo en al menos cuatro maneras:

1) en el momento de la declaración/creación:
Dim variable_del_Objeto As New Tipo_Objeto(Padre) As "nombre_Grupo"


2) en el momento de la creación:
variable_del_Objeto = New Tipo_Objeto(Padre) As "nombre_Grupo"


3) con el método Object.Attach() :
Object.Attach(variable_del_Objeto, Padre, "nombre_Grupo")


4) con Observer :
variable_de_tipo_Observer = New Observer(variable_del_Objeto) As "nombre_Grupo"

 



 
última edición por vuott el Domingo, 30 Marzo 2014, 02:30; editado 4 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ayuda Con Controles 
 
Muchas gracias por tu respuesta Shell.
¿y cómo puedo traducir ese código que yo he puesto a gambas?
Me explico, tú haces uso de un evento clic para que funcione y luego usas la instrucción Case.
Pero lo que yo quiero que haga el programa es que al iniciar (en el form_load) se carguen los textos de los label. Para eso necesito que en el Label 1 salga el texto contenido en value(0), en el label 2 salga el texto de value(1), y así sucesivamente. El mecanismo de pasar las variables de un fichero .conf lo conozco y sé hacerlo, mediante el componente gb.setting. Lo que no sé cómo hacer es lo de atribuir a cada control label la correspondiente variable value (x) simplificando el código.
 



 
kitoko - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ayuda Con Controles 
 
kitoko:

¿ Algo como esto ?:

 etiquetas

Public Sub Form_Open()
  
  Dim un_objeto As Object
  Dim indice As Integer
  
  For Each un_objeto In Me.Controls    
    If un_objeto Is Label Then un_objeto.Text = "opciones/value[" & indice & "]"
    indice += 1
  Next
  
End

Public Sub btnSalir_Click()
  
  Me.Close()
  
End
 


Eso si, esta buscando cada etiqueta que contiene el formulario y le esta asignando un valor que es el de la variable indice.

vuott:

No me acordaba de los manejadores de los objetos. Probare las distintas posibilidades que cuentas.

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: Ayuda Con Controles 
 
Shell  y Kitoko:

Acordaos de la propiedad .tag, que tienen todos los controles, creo que es mejor que usar .text (que se ve por el usuario) y puede dar problemas al traducirse la aplicación...     


If un_objeto Is Label Then un_objeto.tag = "opciones/value[" & indice & "]"


Nota:
Eso si, teneis que poner el valor de la propiedad .tag de cada control (al crearlos por ejemplo).


Citar:
Ahora va mi pregunta para los foreros. ¿ Cómo se puede asignar un grupo desde código ?.

La respuesta de vuot, es muy buena.

Yo tengo un método "más enrevesado", pero con la ventaja de que es dinámico, puedes crear controles en tiempo de ejecución:
0) Tener un control (botón, label, u otro objeto) "temporal", asociado a un grupo.
1)  crear una copia de un control "temporal"
2)  Y luego cambias las propiedades de los controles del control "copia" (.text, . tag, .x, .y, etc.).
3) Repetir el proceso, para tantos controles que necesites.

Nota:
Para copiar controles u objetos ver
Enlace (veáse Nota Actualización 3/8/2013)
 

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Viernes, 28 Marzo 2014, 09:46; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ayuda Con Controles 
 
Julio:

jsbsan escribió: [Ver mensaje]


Acordaos de la propiedad .tag, que tienen todos los controles, creo que es mejor que usar .text (que se ve por el usuario) y puede dar problemas al traducirse la aplicación...     


If un_objeto Is Label Then un_objeto.tag = "opciones/value[" & indice & "]"


Nota:
Eso si, teneis que poner el valor de la propiedad .tag de cada control (al crearlos por ejemplo).



Lo que no entiendo es como asignas al tag una cadena de texto. Si es una matriz de controles como se identifican estos luego ?.
Ejemplo:

Private cuenta_boton As Integer

Public Sub _new()
  
End

Public Sub Form_Open()
  
  Crea_boton(20, 20)
  Crea_boton(20, 50)
  
End

Public Sub Crea_boton(x As Integer, y As Integer)
  
  Dim un_boton As Button
  
  un_boton = New Button(Me) As "botones"
  With un_boton
    .X = x
    .Y = y
    .Width = 110
    .Height = 28
    .Text = "Botón " & cuenta_boton  
    .Tag = cuenta_boton
  End With
  cuenta_boton += 1  
  
End

Public Sub botones_Click()
  
  Select Case Last.Tag
    Case 0
      Message.Info("Opción sin red")
    Case 1
      Message.Info("Opción con red")
  End Select    
  
End
 


Si asigno al tag una cadena de texto, no va a funcionar el manejador de eventos.  
Y ademas también tengo que asignar un texto al botón para saber que hace.

Que por cierto quería comentar que ahora se puede ver en la lista desplegable el nombre del manejador de eventos.
Cosa que antes escribíamos pero no aparecía dentro de una lista.

 manejador

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: Ayuda Con Controles 
 
Julio:

Ok, acabo de verlo.

...
   .Tag = "Boton " & cuenta_boton
 


Si, el manejador de eventos funciona, solo que la propiedad tag pasa a ser un poco grande.
No lo veo ideal, un nombre tan grande para un indice.  

Queda así el manejador de eventos.

Public Sub botones_Click()
  
  Select Case Last.Tag
    Case "Boton 0"
      Message.Info("Opción sin red")
    Case "Boton 1"
      Message.Info("Opción con red")
  End Select    
  
End
 


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: Ayuda Con Controles 
 
Caso resuelto

Antes he tenido que asignar en la ventana de propiedades de cada control Label un tag: label1.tag=0, label2.tag=1, label3.tag=2....................etc
El porqué de asignar en el tag un número menos de su índice es por necesidades del programa.

El código me quedaría así:

Public Sub Form_Open()
 Dim un_objeto As Object
  For Each un_objeto In Me.Controls
    If un_objeto Is Label Then un_objeto.Text = Settings["opciones/value[" & un_objeto.tag & "]"]
  Next
End

Ahora viene lo bueno, que es intentar hacer algo parecido con los Combobox. Pero eso ya es otra historia .

Muchas gracias de nuevo.
 



 
kitoko - 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 Gambas3.4(Casi).Ventana De Ayuda Y Ayuda O... Shell Instalación 3 Martes, 22 Enero 2013, 00:23 Ver último mensaje
Shell
No hay nuevos mensajes Ayuda Con Puntero O Foco En Los Controles ... Jose Antonio Controles/Librerías/Componentes 2 Martes, 22 Abril 2014, 06:26 Ver último mensaje
Jose Antonio
No hay nuevos mensajes Ayuda Online, Ayuda Offline Shell General 1 Jueves, 20 Octobre 2016, 13:30 Ver último mensaje
Shell
No hay nuevos mensajes Propiedades Subrayadas De Los Controles En... Shell General 0 Miercoles, 18 Enero 2017, 12:46 Ver último mensaje
Shell
 

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