PDA

Ver la Versión Completa : Ocultar propiedades


JulioGO
06-10-2004, 23:22:07
¿Alguien sabe como oculta propiedades al crear un componente?. Desearia ocultar propiedades del control ComboBox para que pueda realizar las funciones que le estoy dando.

Saludos.

keyboy
06-10-2004, 23:34:51
El nivel de visibilidad de una propiedad o método no puede degradarse, sólo aumentarse. Sin embargo, puedes heredar tu componente de TCustomComboBox en lugar de TComboBox y publicar sólo las propiedades que quieras mostrar. De hecho TComboBox no tiene nada de código, lo único que hace es publicar propiedades de TCustomComboBox.

Bye

Neftali [Germán.Estévez]
07-10-2004, 10:18:05
¿Alguien sabe como oculta propiedades al crear un componente?. Desearia ocultar propiedades del control ComboBox para que pueda realizar las funciones que le estoy dando...
Se puedes ocultar propiedades en un derivado del componente; Por ejemplo puedes derivar un TComboBox y crear un TComboBoxEx al cual le ocultes las propiedades que desees; Prueba con un código como éste:

(código para la parte de Interficie)

...
type
// Tipo Dummy
TDummyProp = (dummyprop);
// definición del componente derivado
tcomboBoxNew = class(tcombobox)
private
{ Private declarations }
_DummyProp: TDummyProp;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
// Ocultar propiedades ============================
property Charcase:TDummyProp read _DummyProp;
property Color:TDummyProp read _DummyProp;
property Constraints:TDummyProp read _DummyProp;
property Ctl3D:TDummyProp read _DummyProp;
property Cursor:TDummyProp read _DummyProp;
end;

keyboy
07-10-2004, 15:27:28
¿Y esto de qué sirve?



type
TDummyProp = (dummyprop);

TMyEdit = class(TEdit)
private
_DummyProp: TDummyProp;

published
property Text: TDummyProp read _DummyProp;
end;

var
MyEdit: TMyEdit;

...

TEdit(MyEdit).Text := 'Hola, todavía ando por aquí';


y a cambio llenas la componente derivada de una serie de propiedades extrañas.

Bye

Neftali [Germán.Estévez]
08-10-2004, 11:19:28
¿Y esto de qué sirve?
Pues justo para lo que han pedido....

¿Alguien sabe como oculta propiedades al crear un componente?.
Como tú bien apuntas la propiedad sigue estando, pero es que no se ha preguntado cómo quitarla, sino cómo ocultarla. Otro tema es ¿para qué puede ser útil? En mi caso alguna vez sí lo ha sido y Julio tendrá sus razones (supongo).

...y a cambio llenas la componente derivada de una serie de propiedades extrañas. No son propiedades extrañas, sino que son las mismas que tiene el propio componente que las redefines (como cambiarles el tipo); Éstas propiedades no aparecen en el DFM (no ocupan ese espacio).

jachguate
03-11-2005, 18:38:27
Si estas diseñando un componente, no lo derives de TComboBox, debiera haber un TCustomComboBox que no tenga publicadas las propiedades, y para el que podes decidir cuales publicar.

Las propiedades estarán alli, pero serán protegidas.

Saludos.

;)

alapaco
26-12-2007, 17:50:02
Retomando el tema....si yo tengo un frame asi:


type
TfraDomicilio = class(TFrame)
cmbLocalidad: TComboBox;
procedure cmbLocalidadEnter(Sender: TObject);
end;


Es posible modificarlo de alguna forma para que el control cmbLocalidad quede oculto (oculto para acceder por código, pero visible en el frame).

Lo que yo necesito es algo asi:


type
TfraDomicilio = class(TFrame)
private
cmbLocalidad: TComboBox;
procedure cmbLocalidadEnter(Sender: TObject);
published
property Localidad: String read GetLocalidad write SetLocalidad;
end;


Al ejecutar la aplicación y entrar al formulario que contiene ese frame me tira el error "Error reading cmbLocalidad.OnEnter: Invalid property value".

Como se puede solucionar la necesidad de que por código otra clase no pueda modificar las propiedades del control cmbLocalidad ???