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
[-]
TcxgfColumns_Property = class(TClassProperty)
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
end;
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;
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;
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;
procedure TcxgfColumns_Property.Edit;
begin
If ShowFmColumns(TcxgfoColumnsItems(GetOrdValue)) Then
Modified;
end;
function TcxgfColumns_Property.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;
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;