![]() |
No se muesta la coleccion en el editor de propiedades
Hola Amigos.
Estoy creando un componente, el cual tiene una propiedad que es TablaMaestra que es del tipo TCollectionItem. A su vez esta TablaMaestra tiene una propiedad "Campos" la cual es uan coleccion de objetos TCampoMaestro que deriva tambien de TCollectionItem, el caso es que cuando estoy viendo las propiedades del componente, e intento acceder a la lista de campos (pulsando en el botoncito de los puntos) este hace caso omiso y no muestra ningun cuadro para añadir los "CampoMaestro" a la coleccion de campos. Sin eembargo cuando esta Coleccion de "Campos" se la añado al componente directamente que dervia de TComponent el resultado es normal y al pulsar en el botoncilo me muestra el editor correspondiente desde el cual puedo añadir campos a la coleccion.
Entonces sucede que cuando intento implemetar la coleccion dentro del Objeto derivado de TCollectionItem, este no funciona pero si la creo dentro de en el Objeto derivado de TComponent si que funciona bien. Es que no se puede incluir una coleccion dentro de un item parte de otra ? Que me falta? QUe hago mal? Gracias |
tienes que hacre override del método getOwner, revisa en el código fuente del DBGrid y los DBColumns para que te guies mejor
|
Hola.. Estoy revisando el codigo como me comentas, y no consigo aclararme del todo, la verdad es que me hago bastante lio.. podrias echarme un cable?
Gracias. |
HE revisado el codigo de DBGRids... y es justamente (o muy similar en estructura o esencia vamos...) al de arriba. El problema es cuando esa coleccion no es directamente una propiedad de el Objeto TComponent, ahora mismo el problema que tengo es que no me muestra la coleccion en el editor de propiedades. La coleccion la crea, pero cuando le pinchas a los tres puntitos. no aparece el editor correspondiente... Me esta volviendo loco..
alguna ayuda?:confused::confused: |
Guiate de esta unidad tiene lo basico pa crear las colecciones
|
Gracias por tu respuesta.. el caso que es lo que planteaba, hasta aqui me funcionaba bien.. pero el problema es cuando no quiero que la TMiLista sea directamente una propiedad de TMiComponente Si no que necesito que pore ejemplo TMiComponente tenga una propiedad que sea ListaMiItems la cual a su vez tiene la propiedad "Nombre" y una que sea "Items" que sea la que contenga la coleccion ... No se si me explico bien .. que quien deberia derivar en este caso la propiedad ListaMiItems? TPersistent?
Tengo esto : Componente -------nombre : string -------items: Coleccion ---------Item1 ---------Item2 Necesito Esto: Componente -------nombre : string -------MiLista : -----------Nombre : string -----------Items : coleccion --------------Item1 --------------Item2 La primera opcion me funciona estupendo, pero esta segunda es a la que me refiero, la cosa esta implementada, pero cuando intento darle el click al boton de la coleccion, no sale el editor. |
ahora veo mas claro lo q quieres hacer te recomiendo leer estos articulos para q logres hacer lo q quieres
aca explica la razon del porque no se muestra Creating Custom Delphi Components, Part II y aca su respectiva solucion: uso de editores Creating Custom Delphi Components, Part III |
Muchas Gracias! Justo esta mañana llegue a leer hasta la Parte II y a medida lo leia me daba cuenta que era lo mismo que me pasaba a mi,pero no encontraba la parte III voy a mirarlo enseguida
Muchiiiisimas gracias por la auyda prestada. |
Filtrar los valores de una propiedad
Hola..
Continuando con esto se me ocurre a ver si se puede hacer que. Imagnemos que el componente tiene una propiedad Tabla que deriva de TTABLE, y otra propiedad CAMPOS que es una coleccion de TCAMPO. A su vez TCAMPO tiene una propiedad que es "Field" que deriva de TFIELD Como puedo hacer para que en el desplegable me salga unicamente los campos contenidos en la propiedad Tabla.Fields? por que ahora mismo si tengo 7 tablas me selecciona los campos de las 7 me gustaria poder filtrar por aquellos que estan en Tabla.Fields Gacias de nuevo |
He estado miando y al parecer hay que sobreescribir el metodo GetValues de TClassProperty que es donde se muestran los valores que puede tomar, para ello debo incluir en mi clausula Uses, la Unit DesignEditors pero me lanza un error de compilacion diciendo que no encuentra DesignEditros.dcu, donde puedo obtener este archivo?
Estoy usando la version 7 de delphi. Gracias |
Si quieres realizar componentes con acceso a datos tienes q trabajar con TDataLink o TFieldLink. Aca hay unos documentos q te ayudaran a elaborar distintos tipos de componentes, espero y te sean de ayuda.
|
La franja horaria es GMT +2. Ahora son las 12:39:01. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi