![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
En vez de heredar de TListBox, puedes heredar de TCustomListBox. Las clases TCustomXxxx son las mismas que sus correspondientes sin el custom. La diferencia está en que las propiedades no son públicas. Las que te interese hacer públicas las puedes declarar en la sección Published.
__________________
Saludos. |
|
#2
|
||||
|
||||
|
¡Hola!
Cita:
Una sección Public declara elementos públicos que pueden ser accedidos desde cualquier lugar del código. Una sección Published declara elementos públicos publicados, es decir, que además de ser públicos pueden ser accedidos por los mecanismos del IDE en tiempo de diseño (como el inspector de objetos) y guardar sus valores en un DFM. Por el requerimiento del caso, al igual que maeyanes y basti, aconsejo derivar la nueva clase de TCustomListBox. Me sorprende la cantidad de gente que ya le está entrando a la POO de componentes Delphi derivados. Me pregunto si los programadores asiduos a otros lenguajes gozarán de esta misma capacidad y libertad, además del interés por crear sus propias clases de objetos. Son muchos los que por fin se animan a sacarle más provecho a la enorme potencia de Delphi. Enhorabuena elcolo83. ![]() Un abrazo custom. Al González. ![]() |
|
#3
|
||||
|
||||
|
En realidad sí hay un pequeño truco o "chapucilla" para ocultar en el inspector de Objetos propiedades published de componentes que están por "encima" en la herencia.
Lo hemos discutido alguna vez, por ejemplo aquí. Otra cosa es que te plantees si es correcto o no. Es decir, que si a un componente A que deriva de otro B, debes ocultarle propiedades, tal vez sea porque A no deberia derivar de B (sólo piénsalo antes de continuar). De todas formas si la herencia es correcta, y te sigue interesando hacerlo, puedes usarlo, funciona bien.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
||||
|
||||
|
Anda bien lo que decis neftali para ocultar las propiedades (eso no es poliformismo? o es otra cosa?) el unico problema es que ni si quiera yo dentro del mismo componente tengo acceso a Items cuando uso eso...
|
|
#5
|
|||
|
|||
|
Hola...
No es poliformismo, el poliformismo es otra cosa... Lo que te comenta Neftali es solo una técnica... Puedes usar la propiedad de la clase padre tal como:
Saludos... |
|
#6
|
||||
|
||||
|
Perdon... cuando me referia a poliformismo me referia a este codigo
que esta en el link que envio neftali.... lo que se hace en este codigo.... es poliformismo??? |
|
#7
|
|||
|
|||
|
Nop...
Es solo herencia de clases... La parte de "ocultar" las propiedades es solo una técnica y hace uso de una característica de Delphi de poder modificar la forma en como se escribe o lee una propiedad en clases descendientes... Saludos... |
|
#8
|
||||
|
||||
|
Cita:
Si en tu componente has utilizado el Dummy con la propiedad Caption, por decir algo, para modificarla dentro de tu componente debes utilizar:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#9
|
||||
|
||||
|
Les agradezco a todos por el interes en el tema; pude hacer lo que queria.... lo que hice fua plicarle el Dummy a la propiedad items del componente heredado de un TListBox (dentro del componente se modifica usando el inherited como deijo neftali) y luego redefini la funcion additems para que no haga nada cuando esta es invocada...
Ademas de solucionarme el problema me explicaron algunas cosas que no tenia muy en claro asi una vez mas se los agradezco... y agregando un poco a lo que decia "Al Gonzalez", creo que Delphi es imprecionante a la hora de manejar la OOP y solo lo limita la imaginacion de quien programe en este sorprendente lenguaje... como decia mi profesor de informatica: "usen la imaginacion, del resto se encarga el compilador". |
|
#10
|
||||
|
||||
|
Se que ya sea comentado al respecto y se ha dado una posible solución. Esta es la 4ta o 5ta vez que leo el hilo y sigue habiendo algo que no me queda claro.
Cita:
Esto va por lo que ya Neftali recalcó: Cita:
Considero que elcolo83 nos explicase mejor su situación. Con haber dicho esas cortas frases no somos capaces de saber si es realmente beneficioso que implemente dicho truco ¿Cúal es el verdadero objetivo que te planteas elcolo83? El diseño de nuevos componentes que sirvan para propósitos generales no es una actividad que pueda tomarse a la ligera... Considero, y casi siempre hago llamar la atención, a que se haga un mejor y profundo análisis antes de optar por alguna alternativa. Al comienzo, en las primeras lecturas que hice del hilo, estuve pensando que se trata de un caso de Adaptador... que la clase oculte el comportamiento de un TListBox pero.... ahora decanto que sea ventajoso una alternativa como ésta. Sobre todo por el hecho de que me hice una simple pregunta ¿Y de que clase debe heredar el Adaptador? Al menos de lo que yo comprendo sobre el patrón adaptador se puede conseguir de estas formas: 1. Con la herencia:
2. Con el encapsulamiento:
Hay algo que no me ha dejado tranquilo y siento que algo se me escapa... Me gustaría que alguien me explicase que finalidad tendría hacer algo como lo del truco. Yo siento que se trata de un error de diseño (o mejor dicho de una comprensión erronea del dominio). Sabemos que el mundo POO está impregnado de la subjetividad (y personamlente es eso lo que lo hace grandioso, desafiante e interesante) pero me encantaría que tanto elcolo83 como los demás que han participado del hilo compartan su comprensión del tema aqui expuesto. Saludos, |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Ocultar propiedades | JulioGO | OOP | 6 | 26-12-2007 17:50:02 |
| Herencia | miguel867 | OOP | 6 | 12-01-2007 23:08:20 |
| Acceso a las propiedades de un objeto desde el editor de propiedades | Hugo | OOP | 0 | 24-11-2006 12:58:22 |
| Ocultar propiedades heredadas en controles | ElDuc | Varios | 1 | 04-10-2006 20:10:08 |
| Herencia | vegalisandro | OOP | 8 | 15-09-2003 14:30:42 |
|