Ir al contenido


Foto

Cocnoceis este componente


  • Por favor identifícate para responder
34 respuestas en este tema

#21 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.139 mensajes
  • LocationMéxico

Escrito 25 marzo 2009 - 10:50

Que excelente explicación amigo Hector, muchas gracias por el aporte.

Salud OS
  • 0

#22 Héctor Randolph

Héctor Randolph

    501st Legion

  • Administrador
  • 664 mensajes
  • LocationMéxico

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.
  • 0

#23 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 25 marzo 2009 - 11:12

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
  • 0

#24 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.139 mensajes
  • LocationMéxico

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. (y)

Salud OS
  • 0

#25 Héctor Randolph

Héctor Randolph

    501st Legion

  • Administrador
  • 664 mensajes
  • LocationMéxico

Escrito 25 marzo 2009 - 11:19

Coincido con egostar, mejor hacemos otro hilo para responder las cuestiones de este menú.

Saludos
  • 0

#26 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 25 marzo 2009 - 12:34

Ok pues a otro hilo, de todas maneras se deberí­a crear un tutorial sobre escritura de componentes, no explicando como construir un componente, sino como se hace un evento, como hacer visible una propiedad de un componente interno en nuestro componente, etc. Creo que es donde más tiempo ocupamos al crear un componente
  • 0

#27 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 31 marzo 2009 - 12:07

reabro este hilo, ya que siguiendo los pasos del maestro Hector, e agrupado propiedades, instalo el componente sin problemas, pero al aplicarlo a una aplicación me dice que no encuentra el fichero DesingnIntf.Dcu,, e mirado en internet, pero no me aclara que es lo que tengo que hacer , se que esta en el directorio Source Tools Api, pero no se como agregarlo al proyecto, por ciero no fuinciona ni en mi delphi6 ni en el Rad Studio (Delphi 2007). í‡Si podeis echar una mano sere muy agradecido
  • 0

#28 Héctor Randolph

Héctor Randolph

    501st Legion

  • Administrador
  • 664 mensajes
  • LocationMéxico

Escrito 31 marzo 2009 - 03:25

Hola Desart

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.





  • 0

#29 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 12 abril 2009 - 06:19

Hola HEctor Siento la tardanza, en continuar, pero por diversos motivos no he podido ponerme antes con los componentes, hice lo que me dijiste y el error que me da ahora es el siguiente
    [DCC Error] DesignEditors.pas(609): F1026 File not found: 'Proxies.dcu'
En lo único que tengo duda es en

-En las opciones del proyecto añade la ruta ToolsAPI para que encuentre DesignEditors y DesignIntf.

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
  • 0

#30 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 14 abril 2009 - 11:37

encontré una unit Proxies para delphi 6 y la instale en ToolsApi, y ahora  me da el siguiente error

[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
  • 0

#31 Héctor Randolph

Héctor Randolph

    501st Legion

  • Administrador
  • 664 mensajes
  • LocationMéxico

Escrito 29 abril 2009 - 10:05

Hola Desart

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)



delphi
  1. unit LapelpanelReg;
  2.  
  3. interface
  4.  
  5.  
  6. uses
  7.   Classes, Lapelpanel, DesignEditors, DesignIntf;
  8.  
  9. type
  10. TLapelShadowProperty = class(TClassProperty)
  11.   public
  12.     function GetAttributes : TPropertyAttributes; override;
  13.   end;
  14.  
  15.   procedure Register;
  16.  
  17. implementation
  18.  
  19. procedure Register;
  20. begin
  21.   RegisterPropertyEditor(TypeInfo(TLapelShadow),nil, '', TLapelShadowProperty);
  22.   RegisterComponents('Samples', [TLapelPanel]);
  23. end;
  24.  
  25. { TLapelShadowProperty }
  26.  
  27. function TLapelShadowProperty.GetAttributes: TPropertyAttributes;
  28. begin
  29.   Result := [paReadOnly, paSubProperties];
  30. end;
  31.  
  32.  
  33. 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.

Imagen Enviada


Compilamos el paquete, lo instalamos y con esto deberí­a ser suficiente para usar el componente sin problemas en cualquier aplicación.

Saludos

  • 0

#32 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 29 abril 2009 - 11:46

Hector en cuanto tenga algo de tiempo y no este tan molido lo pruebo y te contesto. Has probado el componente Shadow.

Muchas gracias por molestarte.
  • 0

#33 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 05 mayo 2009 - 10:32

Hola compañeros, debo de ser muy torpe  :$  ya que he hecho lo que me comentas, me imagino que debo de quitar el procedure register del archivo principal, pero ahora compila sin errores, pero cuando digo instal  no lo intala aque se puede deber, lo he probado con un ejemplo sin casi código, si tienes dudas me lo dices y te pongo el código de las dos unit, y perdonar a este torpón +o(
  • 0

#34 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 12 mayo 2009 - 09:52

Siento no responder antes pero el monitor del equipo en que programo, esta averiado y estoy pendiente de que HP me lo cambie por otro, tan pronto lo tenga seguiré y  expondré lo que suceda y el código con el que hice las pruebas.
  • 0

#35 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 23 mayo 2009 - 01:53

Hola compañeros ayer ya me trajeron el monitor, pude por fin seguir programando pero por mas que lo intento no me funciona lo de las propiedades, aquí­ dejo el código, solo es el esqueleto para saber si funcionaba, echarles un vistazo para saber si sabéis cual es el error.


delphi
  1. unit shadowPropietisReg;
  2.  
  3. interface
  4.  
  5. uses
  6.   Classes, Shadowpropietis, DesignEditors, DesignIntf;
  7.  
  8. type
  9.     TShadowPProperty= Class(TClassProperty)
  10. public
  11.   function GetAttributes: TPropertyAttributes; override;
  12. End;
  13.  
  14. procedure register;
  15.  
  16. implementation
  17.  
  18. procedure register;
  19. begin
  20.   RegisterPropertyEditor(TypeInfo(TPropertyShadow),nil,'', TShadowPProperty);
  21.   RegisterComponents('Samples',[TShadow]);
  22. end;
  23. function TShadowPProperty.GetAttributes: TPropertyAttributes;
  24. begin
  25.       Result:=[paReadOnly, paSubProperties];
  26. end;
  27.  
  28. end.




delphi
  1. unit Shadowpropietis;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Classes,Graphics, Forms;
  7. // DesignEditors, DesignIntf para poder crear las propiedades ebncadenadas      1/
  8.  
  9. type  //Creamos los Tipos Necesarios
  10.   TShadowDir = (SLeftTop,SLeftBotton,SRightTop,SRightBotton);
  11.   TShadowSize= 0..9;
  12.   TPropertyShadow =class(TPersistent) //Para crear propiedades agrupadas  2/
  13.   private
  14.       FVisible:Boolean;
  15.       FShadowColor: TColor;
  16.       FDireccion: TShadowDir;
  17.       FSize: TShadowSize;
  18.       procedure SetShadowColor (const Value: TColor);
  19.       procedure SetVisible (const Value: Boolean);
  20.       procedure SetDireccion (const Value: TShadowDir);
  21.       procedure SetSize (const Value: TShadowSize);
  22.       published
  23.       property Visible: Boolean read FVisible write SetVisible default True;
  24.       property ShadowColor: TColor read FShadowColor write SetShadowColor default clBlack;
  25.       property Direccion: TShadowDir read FDireccion write SetDireccion default SRightBotton;
  26.       property Size: TShadowSize read FSize write SetSize default 0;
  27.   end;      //Fin crar propiedades agrupadas 2/
  28.  
  29.  
  30.  
  31.   TShadow = class(TComponent)
  32.   private
  33.     FS_Otros : Boolean;
  34.     FS_Panel : Boolean;
  35.     FS_Label : Boolean;
  36.     FS_Edit : Boolean;
  37.     FPropertyShadow: TPropertyShadow;    //Para crear propiedades agrupadas  4/
  38.     procedure SetS_Otros (const Value: Boolean);
  39.     procedure SetS_Panel (const Value: Boolean);
  40.     procedure SetS_Label(const Value: Boolean);
  41.     procedure SetS_Edit (const Value: Boolean);
  42.     { Private declarations }
  43.   protected
  44.     { Protected declarations }
  45.   // procedure Paint();override;  //Sobre escribe el pintado del panel
  46.   public
  47.     { Public declarations }
  48.     constructor Create(AOwner: TComponent); override;
  49.     destructor Destroy(); override;
  50.   published
  51.     { Published declarations }
  52.     property S_Otros: Boolean read FS_Otros write SetS_Otros default True;
  53.     property S_Panel: Boolean read FS_Panel write SetS_Panel default True;
  54.     property S_Label: Boolean read FS_Label write SetS_Label default True;
  55.     property S_Edit : Boolean read FS_Edit  write SetS_Edit default True;
  56.     //Para crear propiedades agrupadas  5/
  57.     property PropertyShadow : TPropertyShadow read FPropertyShadow write FPropertyShadow;
  58.   end;
  59.  
  60.  
  61.  
  62. implementation
  63.  
  64.  
  65. constructor TShadow.Create(AOwner: TComponent);
  66. begin
  67.   inherited;
  68.   FPropertyShadow:=TPropertyShadow.Create;  //Para crear propiedades agrupadas  6/
  69.  
  70. end;
  71. destructor TShadow.Destroy();
  72. begin
  73.   FPropertyShadow.Free;  //Para crear propiedades agrupadas  7/
  74.   inherited Destroy;
  75. end;
  76.  
  77. procedure TShadow.SetS_Otros(const Value: Boolean);
  78. begin
  79.  
  80. end;
  81. procedure TShadow.SetS_Panel(const Value: Boolean);
  82. begin
  83.  
  84. end;
  85. procedure TShadow.SetS_Label(const Value: Boolean);
  86. begin
  87.  
  88. end;
  89. procedure TShadow.SetS_Edit(const Value: Boolean);
  90. begin
  91.  
  92. end;
  93. procedure TPropertyShadow.SetShadowColor(const Value: TColor);
  94. begin
  95.  
  96. end;
  97. procedure TPropertyShadow.SetVisible(const Value: Boolean);
  98. begin
  99.  
  100. end;
  101. procedure TPropertyShadow.SetDireccion(const Value: TShadowDir);
  102. begin
  103.  
  104. end;
  105. procedure TPropertyShadow.SetSize(const Value: TShadowSize);
  106. begin
  107.  
  108. end;
  109.  
  110. end.


Sigo mientras tanto con los componentes que estoy preparando




  • 0