Ver Mensaje Individual
  #3  
Antiguo 24-06-2011
r_e_g_2007 r_e_g_2007 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 20
Reputación: 0
r_e_g_2007 Va por buen camino
Aqui envio una explicación y parte del codigo, gracias

Muchas gracias por todo, es mi primer mensaje y no sabia como hacerlo, trataré de realizarlo mas explicito la proxima vez, disculpen por favor.
Muchas gracias

En el procedure TamcxGridFind_Editor.EditProperty del editor de componentes que se ejecuta al dar dblclic sobre el componente en tiempo de diseño quiero que se ejecute el TcxgfColumns_Property.Edit del editor de propiedades de la propiedad Columnas dentro de las opciones.
Lo que me pasa es que dentro de TamcxGridFind_Editor.EditProperty solo se ejecuta para las propiedades del componente y no para las subpropiedades que tiene la propiedad options.
habrá alguna forma de registrar para saber dentro de TamcxGridFind_Editor.EditProperty todas las propiedades que tiene la propiedad Option dentro.
Aqui pongo parte del codigo que tiene que ver con eso.

Código Delphi [-]
 
  //Editor de la subpropiedad Columnas de la propiedad options del componente
  TcxgfColumns_Property = class(TClassProperty)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;
  //Editor de componente
  TamcxGridFind_Editor = class(TDefaultEditor)
  protected
    procedure EditProperty(const PropertyEditor: IProperty; var Continue: Boolean); override;
  public
    function GetVerb(Index: Integer): String; override;
    function GetVerbCount: Integer; override;
    procedure ExecuteVerb(Index: Integer); override;
  end;
 //Subpropiedades de la propiedad options de componente
  TcxGridFindOptions = class(TPersistent)
  private
    FColumns: TcxgfoColumnsItems;
    FColumnSelectedCell: Boolean;
    FDirection: TcxGridFindDirection;
    FMatchCase: Boolean;
    FMatchWholeWordOnly: Boolean;
    FOwner: TamcxGridFind;
    FSelectedRecords: Boolean;
    FWholeCell: Boolean;
    procedure SetColumns(const Value: TcxgfoColumnsItems);
    procedure SetMatchWholeWordOnly(const Value: Boolean);
    procedure SetWholeCell(const Value: Boolean);
  public
    constructor Create(pOwner: TamcxGridFind);
    destructor Destroy; override;
    procedure RetrieveColumns;
  published
    property Columns: TcxgfoColumnsItems read FColumns write SetColumns;
    property ColumnSelectedCell: Boolean read FColumnSelectedCell write FColumnSelectedCell;
    property Direction: TcxGridFindDirection read FDirection write FDirection;
    property MatchCase: Boolean read FMatchCase write FMatchCase;
    property MatchWholeWordOnly: Boolean read FMatchWholeWordOnly write SetMatchWholeWordOnly;
    property SelectedRecords: Boolean read FSelectedRecords write FSelectedRecords;
    property WholeCell: Boolean read FWholeCell write SetWholeCell;
  end;

  //Componente
  TamcxGridFind = class(TComponent)
  private
    FcxGrid: TcxGrid;
    FOptions: TcxGridFindOptions;
    FText: String;
    procedure SetOptions(const Value: TcxGridFindOptions);
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  private
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Execute;
    procedure FindNext;
  published
    property cxGrid: TcxGrid read FcxGrid write FcxGrid;
    property Options: TcxGridFindOptions read FOptions write SetOptions;
  end;

implementation

procedure Register;
begin
 RegisterComponents('Alex Monsanto', [TamcxGridFind]);
 RegisterPropertyEditor(TypeInfo(TcxgfoColumnsItems), TcxGridFindOptions, 'Columns', TcxgfColumns_Property);
 RegisterComponentEditor(TamcxGridFind, TamcxGridFind_Editor);
end;

{----- class: TcxgfColumns_Property -----}
{----- Public -----}
procedure TcxgfColumns_Property.Edit;
begin
 If ShowFmColumns(TcxgfoColumnsItems(GetOrdValue)) Then
  Modified;
end;
function TcxgfColumns_Property.GetAttributes: TPropertyAttributes;
begin
 Result := [paDialog, paReadOnly];
end;

{----- class: TamcxGridFind_Editor -----}
{----- Protected -----}
 
procedure TamcxGridFind_Editor.EditProperty(const PropertyEditor: IProperty; var Continue: Boolean);
begin
 If PropertyEditor.GetName = 'Options' Then
 Begin
  If ShowFmColumns(TamcxGridFind(Component).Options.Columns) Then
   Designer.Modified;
 End;
end;
Responder Con Cita