Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ocultar propiedades (https://www.clubdelphi.com/foros/showthread.php?t=14999)

JulioGO 06-10-2004 23:22:07

Ocultar propiedades
 
¿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

Cita:

Empezado por JulioGO
¿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)
Código Delphi [-]
...
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?


Código:

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

Cita:

Empezado por keyboy
¿Y esto de qué sirve?

Pues justo para lo que han pedido....

Cita:

Empezado por JulioGO
¿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).

Cita:

Empezado por keyboy
...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

Ocultar control
 
Retomando el tema....si yo tengo un frame asi:

Código Delphi [-]
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:

Código Delphi [-]
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 ???


La franja horaria es GMT +2. Ahora son las 00:09:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi