
Cocnoceis este componente
#21
Escrito 25 marzo 2009 - 10:50
Salud OS
#22
Escrito 25 marzo 2009 - 10:58
Siento abusar, pero sabes como se puede crear subpropiedades de un menú, que es el caso que me interesa. Que te ha parecido el componente.
Hola Desart, tu componente me parece excelente, se ve que has trabajado mucho en él, felicitaciones.
Con respecto a las subpropiedades del menú, podrías explicar un poco más lo que necesitas.
Saludos.
#23
Escrito 25 marzo 2009 - 11:12
#24
Escrito 25 marzo 2009 - 11:17
Gracias Maestro, :$ con respecto al componente, te explico la idea, hace tiempo empece unos componentes, que no pude terminar, el caso de las subpropiedades, es por crear un componente menú con niveles de usuario y seguridad, detallo mas, en un componente menú, al inicio tenemos unas propiedades genéricas al menú en el inspector de objeto, pero cuando creamos, el apartado archivos, las propiedades del inspector objeto es sobre este único apartado y no sobre el menú, en toces lo que quiero agregar son dos propiedades a cada una de las partes del menú, nivel usuario y clave, y otras generiacas al componente. Espero haberme explicado bien
Hola
Este tema esta muy interesante, incluso me atreveria a decir que debiera desarrollarse en un hilo propio, tu idea según entiendo es para personalizar menús por privilegios de usuario cuestión muy solicitada en todos los foros de programación.

Salud OS
#25
Escrito 25 marzo 2009 - 11:19
Saludos
#26
Escrito 25 marzo 2009 - 12:34
#27
Escrito 31 marzo 2009 - 12:07
#28
Escrito 31 marzo 2009 - 03:25
Tienes razón, omití un paso referente a la instalación del componente. :$
Cuando creas un editor de propiedades debes añadir las unidades DesignEditors y DesignIntf (esto sí lo mencioné). Pero para instalarlo lo recomendable es crear un nuevo paquete (*.dpk) que contenga, además de las unidades de tu componente, un paquete compilado que se llama Designide.dcp en la sección requires.
Los pasos a seguir son:
-Crea un nuevo paquete (*.dpk)
-Agrega la unidad o unidades de tu componente.
-Agrega el paquete compilado Designide.dcp en la sección requieres (búscalo en la carpeta ($DELPHI)\lib)
-En las opciones del proyecto añade la ruta ToolsAPI para que encuentre DesignEditors y DesignIntf.
- Guarda el nuevo paquete
- Selecciona Compilar y después Instalar.
Con esto debe ser suficiente para instalar correctamente el componente e incluirlo en cualquier proyecto en Delphi sin problemas.
Saludos.
#29
Escrito 12 abril 2009 - 06:19
[DCC Error] DesignEditors.pas(609): F1026 File not found: 'Proxies.dcu'
En lo único que tengo duda es en
Lo estoy haciendo en project/Options/Directories/Conditionals/Search Path, si no te refieres a esto podrías aclararlo un poco más. Gracias y un saludo-En las opciones del proyecto añade la ruta ToolsAPI para que encuentre DesignEditors y DesignIntf.
#30
Escrito 14 abril 2009 - 11:37
[DCC Error] ToolsAPI.pas(20): F1026 File not found: 'DockForm.dcu'
La verdad que mesta dando bastante quebraderos de cabeza, si podeis echame una mano, fabuloso, si no eliminare lo de agrupar propiedades, hasta más adelante. Un saludo desde Canarias
#31
Escrito 29 abril 2009 - 10:05
Estoy reviviendo este hilo porque hice alguna pruebas para tratar de instalar el componente después de añadirle el editor de propiedades. La conclusión a la que he llegado es la siguiente:
Se debe crear una unidad por separado para registrar los componentes y los editores de propiedades.
En el caso que nos ocupa hice una unidad llamada LapelpanelReg, si observas el código verás que estoy incluyendo las unidades DesignEditors, DesignIntf y la unidad en la que defines tu componente Lapelpanel. Moví a esta unidad las funciones para registrar propiedades y componentes.
Nota: Debes quitar las referencias a DesignIntf y DesignEditors de la unidad en la que definiste tu componente (LapelPanel.pas)
unit LapelpanelReg; interface uses Classes, Lapelpanel, DesignEditors, DesignIntf; type TLapelShadowProperty = class(TClassProperty) public function GetAttributes : TPropertyAttributes; override; end; procedure Register; implementation procedure Register; begin RegisterPropertyEditor(TypeInfo(TLapelShadow),nil, '', TLapelShadowProperty); RegisterComponents('Samples', [TLapelPanel]); end; { TLapelShadowProperty } function TLapelShadowProperty.GetAttributes: TPropertyAttributes; begin Result := [paReadOnly, paSubProperties]; end; end.
Luego tenemos que crear un paquete y añadir la unidad donde se define el componente, la unidad que define los editores y el paquete compilado designide.dcp.

Compilamos el paquete, lo instalamos y con esto debería ser suficiente para usar el componente sin problemas en cualquier aplicación.
Saludos
#32
Escrito 29 abril 2009 - 11:46
Muchas gracias por molestarte.
#33
Escrito 05 mayo 2009 - 10:32
#34
Escrito 12 mayo 2009 - 09:52
#35
Escrito 23 mayo 2009 - 01:53
unit shadowPropietisReg; interface uses Classes, Shadowpropietis, DesignEditors, DesignIntf; type TShadowPProperty= Class(TClassProperty) public function GetAttributes: TPropertyAttributes; override; End; procedure register; implementation procedure register; begin RegisterPropertyEditor(TypeInfo(TPropertyShadow),nil,'', TShadowPProperty); RegisterComponents('Samples',[TShadow]); end; function TShadowPProperty.GetAttributes: TPropertyAttributes; begin Result:=[paReadOnly, paSubProperties]; end; end.
unit Shadowpropietis; interface uses SysUtils, Classes,Graphics, Forms; // DesignEditors, DesignIntf para poder crear las propiedades ebncadenadas 1/ type //Creamos los Tipos Necesarios TShadowDir = (SLeftTop,SLeftBotton,SRightTop,SRightBotton); TShadowSize= 0..9; TPropertyShadow =class(TPersistent) //Para crear propiedades agrupadas 2/ private FVisible:Boolean; FShadowColor: TColor; FDireccion: TShadowDir; FSize: TShadowSize; procedure SetShadowColor (const Value: TColor); procedure SetVisible (const Value: Boolean); procedure SetDireccion (const Value: TShadowDir); procedure SetSize (const Value: TShadowSize); published property Visible: Boolean read FVisible write SetVisible default True; property ShadowColor: TColor read FShadowColor write SetShadowColor default clBlack; property Direccion: TShadowDir read FDireccion write SetDireccion default SRightBotton; property Size: TShadowSize read FSize write SetSize default 0; end; //Fin crar propiedades agrupadas 2/ TShadow = class(TComponent) private FS_Otros : Boolean; FS_Panel : Boolean; FS_Label : Boolean; FS_Edit : Boolean; FPropertyShadow: TPropertyShadow; //Para crear propiedades agrupadas 4/ procedure SetS_Otros (const Value: Boolean); procedure SetS_Panel (const Value: Boolean); procedure SetS_Label(const Value: Boolean); procedure SetS_Edit (const Value: Boolean); { Private declarations } protected { Protected declarations } // procedure Paint();override; //Sobre escribe el pintado del panel public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy(); override; published { Published declarations } property S_Otros: Boolean read FS_Otros write SetS_Otros default True; property S_Panel: Boolean read FS_Panel write SetS_Panel default True; property S_Label: Boolean read FS_Label write SetS_Label default True; property S_Edit : Boolean read FS_Edit write SetS_Edit default True; //Para crear propiedades agrupadas 5/ property PropertyShadow : TPropertyShadow read FPropertyShadow write FPropertyShadow; end; implementation constructor TShadow.Create(AOwner: TComponent); begin inherited; FPropertyShadow:=TPropertyShadow.Create; //Para crear propiedades agrupadas 6/ end; destructor TShadow.Destroy(); begin FPropertyShadow.Free; //Para crear propiedades agrupadas 7/ inherited Destroy; end; procedure TShadow.SetS_Otros(const Value: Boolean); begin end; procedure TShadow.SetS_Panel(const Value: Boolean); begin end; procedure TShadow.SetS_Label(const Value: Boolean); begin end; procedure TShadow.SetS_Edit(const Value: Boolean); begin end; procedure TPropertyShadow.SetShadowColor(const Value: TColor); begin end; procedure TPropertyShadow.SetVisible(const Value: Boolean); begin end; procedure TPropertyShadow.SetDireccion(const Value: TShadowDir); begin end; procedure TPropertyShadow.SetSize(const Value: TShadowSize); begin end; end.
Sigo mientras tanto con los componentes que estoy preparando