![]() |
valor de defecto de propiedad.
Hola querido foro, yo de nuevo molestando por acá, le comento estoy creando un componente muy simple que llama a un form que tiene:
1 - Un label con passwordchar = * 2 - Una caja de texto 3 - Un boton ok 4 - Un boton cancelar La idea principal es que se pueda cambiar el caption del form, del label y del boton ok y cancelar por propiedades para que no me limite si tengo que hacer un programa para otro idioma (hace mas de 5 años programe para un italiano). El código completo del form es:
y el código del componente que si me está funcionando es:
Bueno como explico en la definición de las propiedades si saco las { } en: El error que me sale es: Cita:
Bueno espero que me puedan ayudar. |
Hola...
El detalle es que la palabra reservada default al momento de definir una propiedad publicada (published) solo se permite para propiedades del tipo Ordinal (Enteros, Conjuntos, Tipos numerados, etc...), como bien lo indica el mensaje de error que obtienes. Otro detalle que tienes que tomar en cuenta es que la palabra reservada solo le indica al mecanismo de escritura del componentes que si el valor de la propiedad es el indicado como default no lo escriba en el archivo DFM. Esto significa que en el constructor tienes que inicializar las propiedades con los valores predeterminados. Saludos... |
Agrego al comentario de maeyanes, también existe la palabra reservada stored, donde puedes definir un valor boolean o reverenciar a una función boolean y decidir si guardar o no el valor de la propiedad.
Otra cosa importante a tener en cuenta, es que tanto default como stored solo inciden en si se guarda o no el valor de la propiedad, pero no inicializan el valor de la propiedad con un valor por defecto, esto debemos hacerlo en el constructor del objeto, como lo vienes haciendo. Saludos! |
Muchas gracias
Muchas gracias, entonces poniéndola en el constructor bastaría.
Mañana en el trabajo me fijo ya que no tengo aquí el código |
apoyo a mis compañeros en sus respuestas sobre utilizar el constructor para inicializar las variables... pero me gustaria agregar que la propiedad default tiene un uso especifico con propiedades tipo lista que se accesan a través de un indice...
es decir, si defines la propiedad: TMyclase =class ... property Items[Index: Integer] : String; read getItems write setItems; Default; ... Puedes accesar los Items de la siguiente manera: objMyclase.Items[10] := 'prueba'; o tambien... objMyclase[10] := 'prueba'; En sintesis, la palabra Default en una propiedad no especifica un valor por defecto para la misma, sino que señala cual es la propiedad que se tomara por defecto para la clase... El otro uso que tiene la propiedad Default es con propiedades ordinales, como comentan nuestros compañeros, pero no podría dar una explicación de ello por que aun no las he utilizado... un saludo, |
Muchas gracias.
Muchas gracias, seguiré sus recomendaciones al pie de la letra.
|
La franja horaria es GMT +2. Ahora son las 23:57:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi