|
Página 2 de 2
|
Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Autor |
Mensaje |
Tasagore
Usuario
Registrado: Abril 2016
Mensajes: 48
Edad: 54
|
Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Aunque ahora me pasa una cosa curiosa, si os fijáis en el código, en el string hay una "ñ", cuando pido el MID de esa posición almacena dos caracteres en lugar de uno y no devuelve correctamente la ñ ¿?
Me refiero en cuanto a que sean UTF8 o demás.
Tienes que usar
Gracias, con eso todo listo.
[quote user="vuott" post="33265"]
... arrays de control pero como en gambas no existe
De todas formas en gambas el array de Controles existe.
Exemplum:
Yo a eso no lo llamaría un array de controles exactamente. Con ese método se asume que las estás creando en tiempo de ejecución y que usas una variable que apunta al objeto en sí, y esa variable es un array, pero no es un array de controles, los controles en sí mismos (o los objetos) no son un array, lo que de entrada (por ejemplo) no te permite añadirlos en tiempo de diseño.
Pero es un modo curioso de gestionarlo, me lo apunto por si me surge la necesidad.
Gracias de nuevo!
|
#11 Lunes, 04 Julio 2016, 18:02 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Sì, claramente se trata de una variable array del tipo de un objecto especifico.
Tú qué entiendes precisamente por array de controles ?
|
#12 Lunes, 04 Julio 2016, 20:50 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Yo a eso no lo llamaría un array de controles exactamente.
Pues es exactamente eso, un array de controles. El array contiene una referencia a una lista de controles o (clase de) objetos, porque en gambas y en los lenguajes orientados a objetos, todo es un objeto, incluso las variables. La única diferencia entre 'control' y 'objeto', si la hay, es que los controles son objetos que tienen una parte gráfica con la que interactúa el usuario, pero nada más.
Por lo tanto, claro que un array puede contener controles creados previamente, y también podría contener información para crearlos en tiempo de ejecución, todo depende de las necesidades de tu programa.
A veces comparar gambas con VB no es muy acertado, porque las cosas han cambiado mucho desde aquel viejo VB5 y sus "defectos". El problema es actualizar nuestra forma de pensar y programar a las nuevas tendencias y paradigmas.
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"
|
#13 Lunes, 04 Julio 2016, 22:36 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Citar:
A veces comparar gambas con VB no es muy acertado, porque las cosas han cambiado mucho desde aquel viejo VB5 y sus "defectos". El problema es actualizar nuestra forma de pensar y programar a las nuevas tendencias y paradigmas.
No se puede comparar en ambos sentidos. Mas que comparar, el problema es "la costumbre" de hacer
las cosas en uno y luego quererlas hacer de la misma formas en otro.
Si a eso añades, que acostumbrado a como hacías algo en un basic de un ZX Spectrum.
Y ahora quieres hacer la aplicación de la misma forma en gambas...pues como, que no.
Y si se pudiese, estarías desaprovechando los recursos de un lenguaje.
A pesar de todo. Siempre se puede preguntar en el foro, comentando como se hace en VB y de que manera
se puede hacer eso mismo en gambas. Ya que muchos de la comunidad venimos de VB. Claro que supongo
que a estas alturas ya ni nos acordamos de la mitad de la mitad, de la mitad...
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#14 Martes, 05 Julio 2016, 08:00 |
|
|
didier18
Aprendiz
Registrado: Junio 2014
Mensajes: 84
Edad: 66 Ubicación:
|
Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Hola a todos y Tasagore
Para este problema, tengo un enfoque diferente ...
En realidad, la propiedad "etiqueta" a menudo se olvida o no utilizados por los programadores.
Sin embargo, puede contener casi todo y nada (no sólo el valor), ya que es detype "variante".
Mi enfoque es:
En primer lugar debemos definir las tablas y variables en 'archivo de clase de Gambas
' gambas class file
'crear una matriz de etiqueta
Public lbl As New Label[] 'créé un tableau de label
'mayúscula falsa definido, minúsculas verdadera
Public $bmamin As Boolean 'définis false majuscules, true minuscules
Entonces es posible crear componentes de lo que vamos a crear una rutina privada llamada para abrir el formulario.
Public Sub Form_Open()
'en la apertura de los controles de formulario se crea
'a l'ouverture du formulaire on créé les controles
CreControl()
End
Ahora vamos a crear los controles ...
Private Sub CreControl()
Dim i As Integer
Dim majuscule, minuscule, special As String[]
'La tabla de letras mayúsculas
majuscule = Split("A,B,C,D,E", ",") 'tableau des lettres majuscules
'Letras minúsculas de mesa
minuscule = Split("a,b,c,d,e", ",") 'tableau des lettres minuscules
'Todos los detalles especiales
special = Split("Num,Majuscule,Minuscule,Space,Enter") 'tableau des touches scpéciales
'nombre étiquetas para lbl normales
For i = 0 To 4 'nbr de labels pour les touches normales
'Añadimos una etiqueta y la cuenta
lbl.Add(Null, lbl.Count) 'on ajoute un label et on le compte
'Componente (registrado por i) es un nuevo componente que se crea en la forma y parte del Grupolbl
lbl[i] = New Label(Me) As "Grlbl" 'le composant (comptabilisée par i) est un nouveau composant qui est créé dans le formulaire et qui fait partie du Groupelbl
'Para la etiqueta
With lbl[i] 'pour ce label
'Asignamos un color de fondo
.Background = Color.LightGray 'on assigne une couleur de fond
'Uno pone el número del componente (i) y el mayúsculas y minúsculas en el .tag propiedad
.Tag = i & majuscule[i] & minuscule[i] 'on met le n° du composant (i) et la lettre majuscule et la lettre minuscule dans la propriété .tag
''La propiedad de la ubicación del componente de ... (sin duda cambia la necesidad de cada uno)
'ces propriété concernent l'emplacement du composant... (certainnement à modifier pour les besoin de chacun)
.X = i * 30
.H = 28
.W = 28
'Mostrado por defecto en mayúscula letra (desde $bmamin es normalmente falsa apertura)
.Caption = Mid(lbl[i].Tag, 2, 1) 'affiche par défaut la lettre en majuscule (puisque $bmamin est normalement faux à l'ouverture)
End With
Next
'nombre étiquetas para lbl spécial
For i = 5 To 9 'nbr de labels pour les touches spéciales
'Añadimos una etiqueta y la cuenta
lbl.Add(Null, lbl.Count) 'on ajoute un label et on le compte
Componente(registrado por i)es un nuevo componente que se crea y que es parte de Groupelbl
lbl[i] = New Label(Me) As "Grlbl" 'le composant (comptabilisée par i) est un nouveau composant qui est créé et qui fait partie du Groupelbl
'Para la etiqueta
With lbl[i] 'pour ce label
'Asignamos un color de fondo
.Background = Color.LightGray 'on assigne une couleur de fond
'Se pone el número del componente (i) y en el .tag propiedad especial
.Tag = i & special[i - 5] 'on met le n° du composant (i) et spécial dans la propriété .tag
'Muestra el valor de la etiqueta en el rubro
.Caption = Right(lbl[i].Tag, - 1) 'affiche la valeur tag dans le caption
.X = (i - 5) * 70
.Y = 30
.H = 28
.W = 60
End With
Next
End
Descansar algunos mecánicos para el manejo de visualización ...
Public Sub Grlbl_Enter()
'Cuando el ratón pasa sobre una etiqueta del grupo cambiando el color de fondo de la etiqueta
'Izquierda (Last.Tag, 1) obtener el primer valor de la etiqueta de la etiqueta (esto sólo puede ser un número entero)
'Indicando en la realidad lbl[0] o lbl[1], etc ... Según la última etiqueta en la que sucedió.
'quand la souris passe au dessus d'un des label du groupe on change la couleur de fond du label
'Left(Last.Tag, 1) récupère la première valeur tag du label (ce ne peut être qu'un integer)
'ce qui indiquera en réalité lbl[0] ou lbl[1] etc... Selon le dernier label sur lequel on est passé.
lbl[Left(Last.Tag, 1)].Background = Color.White
End
y al salir del control, debe presentar el color original
Public Sub Grlbl_Leave()
'Idem Grlbl_Enter () para la operación, pero aquí el cambio de color ...
'idem à Grlbl_Enter()pour le fonctionnement, mais ici on change la couleur...
lbl[Left(Last.Tag, 1)].Background = Color.LightGray
End
Sólo queda viva todo esto ... Al hacer clic en un lbl ...
Public Sub Grlbl_MouseDown()
'Será la etiqueta Nº componente
Dim i As Integer 'sera le n° tag du composant
'La carta se recuperará
Dim lettre As String 'sera la lettre à récupérer
'Se recupera el número de la etiqueta
i = Left(Last.Tag, 1) 'i récupère le n° du label
'Dependiendo de si $bmamin verdadera o falsa
Select $bmamin 'selon que $bmamin est faux ou vraie
Case False 'majuscules
'Nos dieron la carta que figura en la etiqueta (el medio, ya que es la capital)
lettre = Mid(lbl[i].Tag, 2, 1) 'on récupère la lettre qui est contenue dans le tag (celle du milieu puisque ce sont les majuscules)
Case True 'minuscules
'Nos dieron la carta que figura en la etiqueta (el más adecuado, ya que es el caso)
lettre = Right(lbl[i].Tag, 1) 'on récupère la lettre qui est contenue dans le tag (celle de droite puisque ce sont les minuscules)
End Select
Select i
Case 5 'Num ... (no tratados en este ejemplo) 'Num... (non traité dans cet exemple)
Case 6 'Majuscule
$bmamin = False
For i = 0 To 4
lbl[i].Caption = Mid(lbl[i].Tag, 2, 1)
Next
Case 7 'Minuscule
$bmamin = True
For i = 0 To 4
lbl[i].Caption = Right(lbl[i].Tag, 1)
Next
Case 8 'Espacio ... (no tratados en este ejemplo) 'Space... (non traité dans cet exemple)
Case 9 'Enter ... (no tratados en este ejemplo) 'Enter... (non traité dans cet exemple)
Case Else 'si esto no es una llave especial que se ha pulsado mientras que esto es una carta !!! 'si ce n'est pas une touche spéciale qui a été appuyée alors c'est donc une lettre !!!
'Una muestra la carta en TextBox1
TextBox1.Text = TextBox1.Text & lettre 'on affiche la lettre dans la textbox1
End Select
End
Por supuesto, no hay que olvidar colocar un cuadro de texto en el formulario para ver aparecer las letras ...
En principio esto es lo que quería hacer?
Buen día.
|
#15 Sabado, 08 Octobre 2016, 18:29 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 2 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|