Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2011
r_e_g_2007 r_e_g_2007 is offline
Miembro
 
Registrado: jun 2011
Posts: 20
Poder: 0
r_e_g_2007 Va por buen camino
Question componente, editor de componente y editor de propiedades

Un saludo, y haber si alguien pudiese ayudarme

Tengo un componente no visual, y este tiene una propiedad por ejemplo "Option" que tiene subpropiedades, y dentro de estas propiedades de option esta una que se llama columnas que llama a un form(tiene ...). Entonces el metodo EditProperty dentro del editor de componentes solo me recorre las propiedades del componente y no las que tiene dentro Option, es decir no reconoce la propiedad "columnas" y entonces el parametro Property no le puedo ejecutar un metodo Property.Edit para ejecutar el llamado que tiene un propertyeditor del campo columnas.
Existe alguna forma de llamar o obtener la property dentro de option para llamar al edit que ya está en el property editor, en este caso de Columnas.
Como dentro del editor de componentes tener acceso a llamar al edit del property editor de la propiedad columnas.


Tcomponente1
name
+option
subpropiedad1
Columnas [...] - llama a un form
Tag


TamcxGridFind_Editor = class(TDefaultEditor)
protected
procedure EditProperty(const PropertyEditor: IProperty; var Continue: Boolean); override;
este solo llama a name, option y tag.
No llama a subpropiedad1 ni a columnas, que en este ultimo caso quisiera escribir propertyeditor.edit
procedure Edit; override;
public
function GetVerb(Index: Integer): String; override;
function GetVerbCount: Integer; override;
procedure ExecuteVerb(Index: Integer); override;
end;

Muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 22-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.703
Poder: 17
maeyanes Va por buen camino
Hola...

Bienvenido a los foros de Club Delphi, te recomiendo que le des una leida a la Guía de Estilo.

Otra cosa, cuando publiques código fuente en Delphi, usa las etiquetas delphi:

[delphi]
begin
ProcedimientoAEjecutar;
Variable := 'hola mundo';
// ejemplo
end;
[/delphi]

lo que se mostrará en los foros así:

Código Delphi [-]
begin
  ProcedimientoAEjecutar;
  Variable := 'hola mundo';
  // ejemplo
end;

Ahora, sobre tu duda, podrías ampliar un poco más la información? Por ejemplo, como está declarado Options.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 24-06-2011
r_e_g_2007 r_e_g_2007 is offline
Miembro
 
Registrado: jun 2011
Posts: 20
Poder: 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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Qué componente o dll utilizar en C# para realizar un editor lo más parecido a Microso msmunoz .NET 0 13-12-2006 01:17:10
Acceso a las propiedades de un objeto desde el editor de propiedades Hugo OOP 0 24-11-2006 12:58:22
Un editor de propiedades eliash OOP 4 10-05-2006 20:51:09
componente editor de texto clanmilano Varios 1 23-01-2006 15:41:37
Problema creando un nuevo componente y un editor de propiedades Koder OOP 8 21-08-2005 10:59:08


La franja horaria es GMT +2. Ahora son las 04:48:52.


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