Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Usar Propiedad Parent
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Usar Propiedad Parent 
 
Buenas!.

Se me presentó un problema a la hora de crear un componente.
Imaginar que queréis crear un objeto Label y "sin pasarle" ningún argumento a _New()
a la hora de crear el objeto, queréis que el titulo del formulario se muestre en el objeto Label
por defecto.

( Es solo un ejemplo ). Pero para otra cosa que hice me ha venido bien usar esta propiedad.

Hay que decir que no todos los objetos tienen la propiedad "Title" o "Text".
Pero si tienen "Tag" Entonces a la propiedad Tag del formulario le asigne el titulo del formulario.
Como es lógico solo es un parámetro. Distinto es si necesitamos más.

Os muestro un código sin optimizar.

Tenemos el formulario principal:

Public Sub Form_Open()
  Dim etiqueta As ClaseLabel
  
  Me.Title = "Soy el título del contenedor padre"
  Me.Tag = Me.Title
  etiqueta = New ClaseLabel(Me)
  
End
 


La clase NuevaLabel .  

Inherits Label

Public Sub _new()
  Dim fuente As New Font  
  Dim texto As String
  
  'Accedemos al contenido de la propiedad tag del contenedor padre
  'y la asignamos a la variable texto
  
  texto = Me.Parent.Tag  
    
  With Me
    .Width = fuente.TextWidth(texto)
    .Height = 30
    .X = Me.Parent.W / 2 - Me.Width / 2
    .y = Me.Parent.H / 2 - Me.Height / 2        
    .Text = texto
  End With
  
  
End
 


Intento que el código del formulario sea lo mínimo posible.

Saludos

EjemploUsoPropiedadParent.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploUsoPropiedadParent.tar.gz
Tamaño: 12.28 KB
Descargado: 25 veces
EjemploUsoPropiedadParent.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploUsoPropiedadParent.tar.gz
Tamaño: 12.28 KB
Descargado: 25 veces
EjemploUsoPropiedadParent.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploUsoPropiedadParent.tar.gz
Tamaño: 12.28 KB
Descargado: 25 veces

 




===================
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: Usar Propiedad Parent 
 
Sigamos.

Supongamos que tenemos una clase que hereda de la clase DrawingArea.

Nuestro objeto DrawingArea modificado tiene que conocer valores de su contenedor padre, el formulario que lo aloja.
Por el desconocimiento de la propiedad Parent usaba este formato.

...
 ecartesianos = New ClssEjes(Me, Me, divisiones)
...
 


Tenía que pasarle el objeto contenedor, el formulario para conocer las dimensiones de este y un parámetro que se necesitaba conocer.
Ahora con la propiedad Parent tengo la opción de usar directamente

...
ecartesianos = New ClssEjes(Me)
...
 


Y cambiar el valor en el formulario durante el tiempo que dure su ejecución.
O también.

...
ecartesianos = New ClssEjes(Me, divisiones)
...
 


Dentro del constructor del objeto se puede asignar el objeto padre a una variable de instancia.

Si, no paro ni en navidades..

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Viernes, 25 Diciembre 2015, 11:16; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Usar Propiedad Parent 
 
Hola Shell

Para hacer referencia al Form contenedor del control, yo usaría

Application.ActiveWindow

Te devolverá el Formulario en el que se encuentra el control. Realmente obtienes un objeto Window

Puedes acceder a las propiedades de este.  Si usas Parent de los controles que te lo permitan tienes que hacer una función recursiva consultando el Parent de los Container en que se encuentre el control, y es un lío. Más fácil siempre que sólo tengas que consultar la ventana en la que se encuentre el control.

Un saludo
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Usar Propiedad Parent 
 
En esta línea yo suelo asignar una colección a la propiedad tag del form creado que contiene todo lo que necesito que contenga. Entre otras cosas incluyo un elemento llamado "llamador" que es una referencia al form donde se crea. Algo así:

    dim f as form

    f=new form(micontenedor)
    f.tag=new collection
    f.tag.Add(me,"llamador")
    f.show()
 


El motivo de todo esto es que  no siempre el creador de un formulario es su contenedor ni siempre el padre existe después de haber creado al hijo, etc.
 




===================
No podemos regresar
 
última edición por shordi el Miercoles, 30 Diciembre 2015, 18:33; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Usar Propiedad Parent 
 
Citar:

...ni siempre el padre existe después de haber creado al hijo,


Que poca vergüenza de padre..perdonar es efecto de las fiestas.  

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: Usar Propiedad Parent 
 
Ahtonio:

Por ahora lo que estoy haciendo es crear el control en el formulario principal o a lo mas, en el caso
del ejemplo que estoy haciendo es tener un formulario ademas del principal donde crear el objeto,
independientemente del principal.

Subiré el ejemplo cuanto antes lo acabe para solicitar opiniones del modo en que está hecho.
He creado la clase y ahora pretendo construir un componente para probar. Es muy sencillo.

Jorge:

Interesante lo del elemento llamador.  Ya veo que se le puede asignar cualquier tipo a Tag.

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: Usar Propiedad Parent 
 
Shordi

f.Add(me,"llamador")

¿ese es correcto?

¿no será asi?
f.tag.Add(me,"llamador")
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Usar Propiedad Parent 
 
Citar:
¿no será asi?
f.tag.Add(me,"llamador")


 Saxto Julio, no perdonáis una...    
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Usar Propiedad Parent 
 
Citar:

 Saxto Julio, no perdonáis una.


Al pan pan y al vino vino.  
Y luego nos quejamos por errores de precisión de números, imagina algo como esto.

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:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Propiedad Animated Del Control ToolPanel abarzuaf Controles/Librerías/Componentes 0 Jueves, 28 Enero 2010, 16:17 Ver último mensaje
abarzuaf
No hay nuevos mensajes DrawingArea. Propiedad Cached Shell Controles/Librerías/Componentes 2 Lunes, 02 Diciembre 2013, 10:01 Ver último mensaje
Shell
No hay nuevos mensajes Manipular String[] En Propiedad Tag? v3ctor General 4 Martes, 15 Agosto 2017, 20:17 Ver último mensaje
v3ctor
No hay nuevos mensajes Propiedad Tracking Shell General 0 Domingo, 09 Junio 2019, 09:22 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