|
Página 1 de 1
|
Crear Un Componente Con Gambas3 (SOLUCIONADO)
Autor |
Mensaje |
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Crear Un Componente Con Gambas3 (SOLUCIONADO)
Hola,
No consigo que al crear una propiedad tipo String, llamada "Tipo" me aparezcan los valores de la lista en el control en tiempo de diseño.
Otra cosa: Cuando se crea el nuevo objeto ¿En qué momento se asigna el valor que tienen las propiedades al objeto? Ejemplo: si yo cambio en tiempo de diseño el borde del Textbox a False, y Decimales a "2", si pongo este código para hacer comprobaciones:
Los valores que me saca son
True
0
respectivamente. Cuando temina de cargar, el borde del control no sale (es lo esperado), pero "Decimales" no toma el valor "2" que le habíamos puesto en tiempo de diseño.
¿Alguna pista?
Gracias anticipadas
Saludos
última edición por ljma el Lunes, 27 Febrero 2012, 23:34; editado 3 veces
|
#1 Domingo, 26 Febrero 2012, 18:20 |
|
|
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Re: Crear Un Componente Con Gambas3
Hola otra vez,
Por si no se entiende pongo un ejemplo más elaborado.
la Clase Class1:
La Clase Class2:
Este código crea un componente de usuario que se pone en color azul cuando recibe el foco y debería ponerse en color rojo cuando lo pierde si la propiedad "Obligatorio" está en True.
Como se puede ver, por defecto, esta propiedad está en True. Aunque se ponga en True en tiempo de diseño, luego en tiempo de ejecución no coge este valor, coge siempre False. Es como si faltara código para asignar los valores de las propiedades asignados en tiempo de diseño a las variables de las propiedades.
Tampoco consigo crear una propiedad con una lista de opciones. Según el How To:
For properties that take their value into a list of predefined constants of the same class, you can specify a class instead of a property kind, with an optional list of constants.
Class . ( * | Constant1 ; Constant2 ; ... ) [ = Default ]
The IDE will will use a ComboBox control to edit the value of the property, and will fill it with the specified constants.
¿Alguna idea de qué estoy haciendo mal?
Gracias anticipadas
|
#2 Lunes, 27 Febrero 2012, 09:37 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Crear Un Componente Con Gambas3
Destro del evento _New() deberías inicializar los valores de las propiedades (no de sus variables) tal que así:
Public Sub _new()
hObs = New Observer(Me) As "TextBox" ' declara una nueva clase observer llamada TextBox
Super.background = &FFFFFF&
Obligatorio = True
' otrapropiedad = loquesea
End
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"
|
#3 Lunes, 27 Febrero 2012, 14:05 |
|
|
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Re: Crear Un Componente Con Gambas3
Hola jguardon,
Gracias por contestar. Ya lo tengo casi claro tal y como me habéis indicado Benoît y tu. Fallo mío por no terminar de leer el How to.
Citar: You must be careful when defining (or not) the Default value of a property.
* First, if not specified, the taken default value is the default value associated with the property data type (FALSE for a Boolean property, 0 for a numerical one...).
* Last, the default value must be accurate with the property implementation. Because when a property is set to its default value in the IDE form editor, no code is emitted to initialize the property at run time.
Queda pendiente el poner una lista de opciones tipo string en una propiedad. ¿Alguna idea?
Saludos
|
#4 Lunes, 27 Febrero 2012, 18:22 |
|
|
angelnu
Angel
Programador
Registrado: Septiembre 2009
Mensajes: 106
Edad: 61 Ubicación:
|
Re: Crear Un Componente Con Gambas3
Si no declaras unas constantes con el nombre no te pueden salir en lista de valores, esto es lo que yo tengo declarado en un control basado en textbox:
Inherits TextBox
Export
Public Const _Properties As String = "*,-Password,Fecha_local{TextBd.local;ingles},TipoDatos{TextBd.boolean;byte;short;integer;long;single;float;date;string;stringNumeric},CampoBd,Formato,SelecFoco,Value"
Public Const _DrawWith As String = "TextBox"
Public Const _Similar As String = "TextBox"
Public Const _IsControl As Boolean = True
Public Enum {boolean} = 1, {byte} = 2, {short} = 3, {integer} = 4, {long} = 5, {single} = 6, {float} = 7, {Date} = 8, {String} = 9
Public Enum {stringNumeric} = 10, {local} = 11, {ingles} = 12
Property Value As Variant
Property TipoDatos As Integer
Property CampoBd As String
Property Formato As String
Property SelecFoco As Boolean
Property Fecha_local As Integer
Property Text As String
Como veras la propiedad Fecha_local es integer el encabezado: Fecha_local{TextBd.local;ingles} en tiempo de diseño sale el combo con esos dos valores que estan declarados como constantes {local} = 11, {ingles} = 12.
Espero que te sirva, a mi el control me funciona perfectamente el problema es que en gambas3 para ver el control en la caja de herramientas tengo que agregar la clase al proyecto, mientras que en gambas2 hacías el ejecutable del control y era accesible para todos los proyectos, yo por lo menos no se como hacerlo.
Un saludo
Angel
|
#5 Lunes, 27 Febrero 2012, 19:16 |
|
|
ljma
Programador
Registrado: Enero 2010
Mensajes: 106
Edad: 54 Ubicación:
|
Re: Crear Un Componente Con Gambas3 (SOLUCINADO)
Hola,
Muchas gracias Angel. Es perfecto.
Saludos
|
#6 Lunes, 27 Febrero 2012, 23:33 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados 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
|
|
|
|
|