Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
Acceder A Una Propiedad De Un Objeto Mediante Su TAG?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG? 
 
vuott escribió: [Ver mensaje]
Tasagore escribió: [Ver mensaje]

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"]
Tasagore escribió: [Ver mensaje]

Tasagore escribió: [Ver mensaje]
... arrays de control pero como en gambas no existe

De todas formas en gambas el array de Controles existe.

Exemplum:
Private Const LATUM As Byte = 60


Public Sub Form_Open()

  Dim lb As Label
  Dim ll As New Label[]   '  Variable vectorial de Label
  Dim b As Byte
  
    Me.W = LATUM * 12
    
    For b = 0 To 9
' Creo una Label y...
     lb = New Label(Me)
'...la asigno a el array de Label:
     ll.Push(lb)
    Next
    
' A cada Label, contenida en el array de Label, atribuyo algunas propiedades:
    For b = 0 To ll.Max
      With ll[b]
        .W = LATUM
        .H = 40
        .X = b * LATUM
        .Y = LATUM + (b * b)
        .Text = " Label " & CStr(b)
        .Background = Rand(0, &FFFFFF)
      End With
    Next

End

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!
 



 
Tasagore - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 ?
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Acceder A Una Propiedad De Un Objeto Mediante Su TAG? 
 
Tasagore escribió: [Ver mensaje]

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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
didier18 - 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 ¿Cómo Acceder A Los Elementos De Una Web? Evadido2 Controles/Librerías/Componentes 5 Jueves, 06 Enero 2011, 22:33 Ver último mensaje
estrella_de_galicia
No hay nuevos mensajes Scrip Para Acceder A Mysql Ricardo Prieto General 2 Domingo, 22 May 2016, 02:15 Ver último mensaje
vicr
No hay nuevos mensajes Alterar Una Propiedad O Un Método De Un O... vuott General 10 Martes, 25 Octobre 2016, 22:56 Ver último mensaje
vuott
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 2 de 2
Ir a la página Anterior  1, 2

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