Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Ocultar propiedades en componentes

Como están todos, ps les diré mi problema, estoy haciendo un componente que hereda de TIBQuery (con c++ builder 2010), y por razones de diseño y seguridad, necesito ocultar algunas de sus propiedades que aparecen en el inspector de objetos, aunque ya revise e intente implementar los consejos de Neftali expuestos en este hilo, aun no logro hacerlo, ya que este método lo único que hace es cambiarme la propiedad no ocultármela. La pregunta es, alguien sabe cómo ocultar propiedades heredadas?


De antemano gracias.
Responder Con Cita
  #2  
Antiguo 01-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.328
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Pues algo no debes estar haciendo bien, porque a mi sí me las oculta (hablamos de "ocultarlas" en el Inspector de Objetos).
Hay que decir que "conceptualmente" el hecho de "ocultar" propiedades no creo que sea muy aconsejable ni correcto, pero en mi caso era por comodidad a la hora de trabajar con determinados componentes.

Si defines un nuevo componente tal que así:

Código Delphi [-]
  // Tipo Dummy
  TDummyProp = (dummyprop);

  TEditRocortado = class(TEdit)
  private
    _DummyProp: TDummyProp;
  protected
    { Protected declarations }
  public

  published
    // Ocultar propiedades ============================
    property Anchors:TDummyProp read _DummyProp;
    property AutoSelect:TDummyProp read _DummyProp;
    property AutoSize:TDummyProp read _DummyProp;
    property BevelEdges:TDummyProp read _DummyProp;
    property BevelInner:TDummyProp read _DummyProp;
    property BevelKind:TDummyProp read _DummyProp;
    property BevelOuter:TDummyProp read _DummyProp;
    property BiDiMode:TDummyProp read _DummyProp;
    property BorderStyle:TDummyProp read _DummyProp;
  end;

Si te fijas no he hecho nada más que ocultar todas las propiedades del Edit que empiezan por A y B.

Si ese componente lo "sueltas" en un formulario y miras el Inspector de Objetos verás esto:



Con Delphi 6, al menos, desaparecen esas propiedades.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 01-10-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Gracias Neftali, Pues sí que pensé que lo implementaba mal, pero después de muchos intentos, esta fue la única forma que no me marcaba errores:

Código:
typedef TDummyProp;//Declaro un tipo cualquiera

class PACKAGE LcIBQuery : public TIBQuery
{
private:
     TDummyProp _DummyProp;//Declaro a ese tipo

__published:
    //Declaro las propiedades que quiero ocultar
    __property TDummyProp Database={read=_DummyProp};
    __property TDummyProp SQL={read=_DummyProp};

public:
    __fastcall LcIBQuery(TComponent* Owner);
    __fastcall ~LcIBQuery();
};
Y el resultado es



Si no es mucha molestia podrías hacerme las correcciones pertinentes, por favor.

Edición:
Probé rápido en delphi y pasa lo mismo, será que este método ya no funciona en el RAD 2010?

Código Delphi [-]
type
  TDummyProp = (dummyprop);

  TIBQuery1 = class(TIBQuery)
  private
    _DummyProp: TDummyProp;

  published
     property SQL:TDummyProp read _DummyProp;
     property Database:TDummyProp read _DummyProp;
  end;

Última edición por _cero_ fecha: 01-10-2010 a las 17:49:18.
Responder Con Cita
  #4  
Antiguo 04-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.328
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por _cero_ Ver Mensaje
Edición:
Probé rápido en delphi y pasa lo mismo, será que este método ya no funciona en el RAD 2010?
Pues seguramente es un cambio en este sentido.
Con la versión 6 funciona perfectamente, en cambio con D2009 me aparece en Gris, pero aparece.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 04-10-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Es una lástima, aunque seguiré buscando me da que tendré que conformarme con solo sobre escribirlas así al menos no causan conflicto, pero estorban y confunden en el inspector.
Pd. Parece que hay un pequeño método con un editor de propiedades, aunque en este momento ando un poco justo en los tiempos y no profundizaré (quizás para la siguiente versión de los componentes), aun así les paso el código por si a alguien más le interesa.
Código Delphi [-]
unit HideAboutProps;

// Declare a Property-Category-Class

type
  TAboutPropCategory = class(TPropertyCategory)
    // Give it a name and a description
    // Namen und Beschreibung vergeben
    class function Name: string; override;
    class function Description: string; override;
  end;

procedure Register;

implementation

// Register this new Property Category in the Delphi-IDE

procedure Register;
begin
  RegisterPropertyInCathegory(TAboutPropCategory, 'About');
end;

// Implementation of the two class functions from above
class function TAboutPropCategory.Name: string;
begin
  Result := 'About';
end;

class function TAboutPropCategory.Description: string;
begin
  // As you want it ...
  Result := 'Gives information about the author.';

end;

// To use this new category, you only have to include this unit in a package and recompile it.
// If you want, you now can hide all properties called 'About' from being displayed
// in the object inspector.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ocultar propiedades de la herencia elcolo83 OOP 18 19-01-2008 22:56:08
Ocultar propiedades JulioGO OOP 6 26-12-2007 17:50:02
Ocultar propiedades heredadas en controles ElDuc Varios 1 04-10-2006 20:10:08
Propiedades de componentes david.rguez Varios 1 01-09-2006 13:28:14
propiedades de componentes Descendents OOP 1 19-01-2004 16:24:25


La franja horaria es GMT +2. Ahora son las 07:16:43.


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
Copyright 1996-2007 Club Delphi