Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   How To > Arbol de Properties en el Object Inspector (https://www.clubdelphi.com/foros/showthread.php?t=61268)

MaMu 01-11-2008 15:25:28

How To > Arbol de Properties en el Object Inspector
 
Arbol de Properties en el Object Inspector

Estoy creando un componente, el cual tiene muchas propiedades de un misma jerarquía, como por ejemplo la propiedad Font de un componente, la cual agrupa ciertas propiedades pertenecientes al tipo de letra. Pues bien, como hago yo para encerrar todas mis propiedades en una categoria?

[Font]
Color
Size
etc...

Y yo quiero por ejemplo:
[Persona]
Nombre
Apellido
DNI
etc.

Si bien, en el objet inspector me aparecen estas propiedades, quiciera que esté dentro de una categoría, como en el ejemplo anterior.
Como se hace?

Saludos y Muchas Gracias

coso 01-11-2008 16:59:58

Hola, lo mejor que podrias hacer es crear una clase con las propiedades que tu quieres 'jerarquizar', y crear un objeto de tu clase dentro de tu componente, por ejemplo, y este asignarlo a una propiedad. Deberas crearlo en el create y destruirlo (si no tiene owner) en el destroy

Código Delphi [-]

private
FMiClase : TMiClase
...
public
constructor Create(AOwner : TComponent); override;
destructor  Destroy; override;
published
property MiClase : TMiClase read FMiClase write FMiClase;

...

constructor TComp.Create(AOwner : TComponent);
begin
       inherited Create(AOwner);
       FMiClase := TMiClase.Create;
       ...
end;

destructor TComp.Destroy;
begin
        if Assigned(FMiClase) then FMiClase.Free;
        ...
        inherited Destroy;
end;

Lepe 02-11-2008 12:50:07

Ampliando lo dicho por coso:

Si tienes un tipo enumerado, se convierte en el Inspector de objetos en una Lista desplegable, como la propiedad FormStyle

Si tienes un tipo "set" te aparece el símbolo "+" para desplegarlo, igual que la propiedad Style de un TFont, o las "options" de un grid.

Si es un tipo de datos más complejo, deberías crear un Editor de propiedades (busca por property editors en el foro) de forma que te saldrá un botón con 3 puntitos y al pulsarlo saldrá la ventana que tú diseñes a tal fin.

Saludos

maeyanes 03-11-2008 15:41:49

Hola...

Agregando...

La clase que va a contener las subpropiedades debe descender de TPersistent para que estas puedan guardar sus valores en el DFM.

Código Delphi [-]
interface

type
  TSubProperty = class(TPersistent)
  private
    FNombre: string;
    FApellidos: string;
  published
    property Nombre: string read FNombre write FNombre;
    property Apellidos: string read FApellidos write FApellidos;
  end;

  TParentComponent = class(TComponent)
  private
    FSubProperty: TSubProperty;
    procedure SetSubProperty(Value: TSubProperty);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property SubProperty read FSubProperty write SetSubProperty;
  end;

implementation

constructor TParentComponent.Create(AOwner: TComponent);
begin
  inherited;
  FSubProperty := TSubProperty.Create
end;

destructor TParentComponent.Destroy;
begin
  FSubProperty.Free;
  inherited
end;

procedure TParentComponent.SetSubProperty(Value: TSubProperty);
begin
  FSubProperty.Assign(Value)  // Tienes que redefinir el método Assign en TSubProperty
  // para poder hacer esto
end;


Saludos...


La franja horaria es GMT +2. Ahora son las 08:32:21.

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