Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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 .
Intento que el código del formulario sea lo mínimo posible.
Saludos
Descripción: |
|
Descargar |
Nombre del archivo: |
EjemploUsoPropiedadParent.tar.gz |
Tamaño: |
12.28 KB |
Descargado: |
25 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
EjemploUsoPropiedadParent.tar.gz |
Tamaño: |
12.28 KB |
Descargado: |
25 veces |
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"
|
#1 Viernes, 25 Diciembre 2015, 11:04 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
|
#2 Viernes, 25 Diciembre 2015, 11:14 |
|
|
ahtonio
Programador
Registrado: Octobre 2009
Mensajes: 144
Edad: 58 Ubicación: Zaragoza
|
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
|
#3 Viernes, 25 Diciembre 2015, 11:44 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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í:
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
|
#4 Viernes, 25 Diciembre 2015, 12:15 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#5 Viernes, 25 Diciembre 2015, 14:39 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#6 Viernes, 25 Diciembre 2015, 18:41 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Usar Propiedad Parent
Shordi
¿ese es correcto?
¿no será asi?
f. tag.Add(me,"llamador")
|
#7 Sabado, 26 Diciembre 2015, 11:37 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Usar Propiedad Parent
Citar: ¿no será asi?
f.tag.Add(me,"llamador")
Saxto Julio, no perdonáis una...
=================== No podemos regresar
|
#8 Miercoles, 30 Diciembre 2015, 18:33 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#9 Jueves, 31 Diciembre 2015, 10:54 |
|
|
|