PDA

Ver la Versión Completa : Editar propiedades


JMGR
02-06-2003, 23:06:52
Buenas...
Estoy haciendo un boton que tiene un OpenDialog asociado, de manera que al hacer click se ejecute dicho dialogo. Hasta ahi bien, el problema es que la propiedad Filter del Open Dialog la tengo que rellenar a mano en el object inspector, y es bastante coñazo...

Me gustaria saber como puedo editar dicha propiedad con el editor que usa la clase OpenDialog

He estado mirando algo sobre registrar editores de propiedades pero todavia no he conseguido nada...

Muchas gracias y un saludo.
JM

Julià T.
02-06-2003, 23:51:42
Puedes usar

Property Fichero:TFileName;

para que funcione cuando estás en diseño

delphi.com.ar
03-06-2003, 00:21:42
Te hice un ejemplo que puedes bajar de mi página en la parte de ejemplos (http://www.delphi.com.ar), te cuento que no encontré ninguna documentación sobre este editor de propiedades, si alguien ha hecho esto anteriormente, le pido por favor que me informe de dónde sacó info.
Te cuento que el paquete está hecho en Delphi 5, así que puedes tener que cambiar algunos detalles para las versiones más modernas.

Saludos!

JMGR
03-06-2003, 22:57:38
Gracias por el ejemplo, pero no funciona porque me pide el FiltEdit.dcu y no lo tengo...
¿Alguna solucion?

delphi.com.ar
04-06-2003, 17:40:39
Seguramente has quitado de "requires" en el package el package dclstd50, si actualizas la versión de Delphi seguramente sea dclstd60 y dclstd70, de no ser así, vamos a tener que buscar en que package esta esa unit.

package FileEditPkg;
...
requires
vcl50,
dclstd50;

contains
FilterEditorComponent in 'FilterEditorComponent.pas';

end.

Espero haber sido claro,
Saludos!

JMGR
04-06-2003, 19:54:20
Buenas...

Primero que nada, gracias por el interes.

Esta es la unit del package, y por cierto, estoy usando Delphi 5:

package FileEditPkg;

{$R *.RES}
{$ALIGN ON}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST ON}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$IMPLICITBUILD OFF}

requires
vcl50,
dclstd50;

contains
FilterEditorComponent in 'FilterEditorComponent.pas';

end.

¿ Cual es el problema?

delphi.com.ar
04-06-2003, 20:44:43
Es raro, a mi me compila sin problemas. ¿Tienes los archivos dclstd50.bpl y dclstd50.dcl en el search path del proyecto o en el path del SO?

JMGR
04-06-2003, 20:56:49
Vamos a ver, a mi el paquete si me lo compila sin problemas, es a la hora de usar el componente en un programa cuando salta al compilar, pidiendo el FiltEdit.dcu

Por otro lado, de los dos archivos que nombras, el dclstd50.bpl si lo tengo pero el dclstd50.dcl no, el que tengo es el dclstd50.dcp, me imagino que habra sido una errata...

delphi.com.ar
04-06-2003, 21:05:55
Tienes razón, es DCP... es que a veces me equivoco! :D
El tema es que para usar este tipo de editores de propiedades, vas a tener que hacer un package de DesignTime y uno RunTime. En el de diseño pondrás todos los PropertyEditors, y en el de RunTime solamente el código que será necesario en tiempo de ejecución.

JMGR
04-06-2003, 21:40:35
:eek: Estoy totalmente perdido...:confused:

A ver, para poder usar el editor de propiedad tengo que crear dos paquetes, uno para ejecucion y otro para diseño, pero ¿que tengo que incluir en cada paquete? porque segun lo que me dices, en el de diseño tengo que incluir todos los editores de propiedades, pero si no tengo el FiltEdit.dcu ni el .pas, ¿como lo puedo incluir?, y en ejecucion ¿que codigo me hace falta si lo que quiero es editar la propiedad pero en diseño?...:confused:

Te agradeceria que me aclararas un poco mas todo este lio...

delphi.com.ar
04-06-2003, 22:13:52
No te asustes que no es nada complicado, he subido un nuevo ejemplo donde están creados los dos paquetes.
Yo recomiendo SIEMPRE crear un paquete de RunTime y DesignTime, como primer motivo para poder acceder a algunos editores de propiedades de una manera sencilla, un buen ejemplo es este o algunas funciones de los editores de propiedades de colecciones.... , y como otro motivo es evitar incluir código innecesario en "producto final" EXEs+BPLs.
El archivo FiltEdit.dcu, que es donde está el editor de propiedades que estamos utilizando, está dentro del paquete dclstd50, por eso no encuentras físicamente el archivo.

Éxitos!

delphi.com.ar
05-06-2003, 22:59:24
¿Entendiste el ejemplo? ¿Te funcionó? ¿Te es útil?

JMGR
06-06-2003, 23:34:54
Buenas....

Primero que nada siento no haber contestado antes, pero entre que el otro dia se me corto la conexion y la falta de tiempo...lo siento.

Por otro lado, tu ejemplo funciona perfectamente, muchisimas gracias. Ahora estoy intentando comprenderlo, que es algo mas dificil. Por ahora lo que he deducido es que tengo que crear un paquete de diseño donde incluya el dclstd50 y uno de ejecucion con mi componente.... ¿correcto? ¿Se me escapa algo?

Ahora lo voy a probar y ya te dire como me va.
Un saludo.
JM

JMGR
07-06-2003, 00:01:39
:D :D :D ...Funcionó!!!!

Perfecto, ya lo consegui. muchas gracias por tu ayuda y por el interes, me has descubierto un aspecto de los componentes que desconocia...

Ahora solo me queda mejorar el componente con algun detalle mas por aqui y por alla, intentare hacerlo por mi cuenta y si no ya dare el coñazo por aqui....;)

De nuevo muchas gracias y un saludo.
JM