2009-11-20 12 views
5

Estoy buscando construir mi propio componente y no tengo idea de dónde comenzar. Tengo algunos libros de Delphi pero son viejos y obsoletos, y estoy buscando algunas recomendaciones sobre tutoriales/libros para ayudarme a hacer esto. El componente será bastante simple, básicamente 2 etiquetas y una imagen. Necesito cientos de estos en una matriz, así que pensé que un componente sería la mejor ruta. El texto se ajustará en función del ancho, etc. y tendrá algunos eventos mouseover. Entonces, básicamente, ¿dónde empiezo?¿Por dónde debería comenzar a construir un componente?

Estoy utilizando Delphi 2009, esta será una aplicación win32.

Gracias!

Respuesta

1

Eche un vistazo a this article, que describe cómo crear nuevos componentes formados por un grupo de componentes existentes.

+0

No siguió el enlace, pero ¿describe lo que hace mi respuesta? :-) –

5

Por lo que sé, Delphi Component Design, de Danny Thorpe, sigue siendo el mejor libro sobre el tema. El diseño de los componentes no ha cambiado significativamente en los últimos 15 años, por lo tanto, cualquiera que sea el libro que tenga, probablemente no esté tan desactualizado como cree. Hay tres cosas a tener en cuenta al leer referencias anteriores:

  1. Los nombres de ciertas unidades han cambiado. Ya no hay DsgnIDE, por ejemplo. Es DesignIDE en su lugar.

  2. El código de tiempo de diseño está estrictamente separado ahora del código de tiempo de ejecución. Esto significa que no puede usar DesignIDE en la unidad de su componente, de lo contrario, tiene prohibido usar paquetes de tiempo de ejecución. Las versiones anteriores de Delphi no tenían esta restricción técnica (aunque siempre ha sido una restricción legal), por lo que los ejemplos de código antiguo que encuentre podrían necesitar un cambio.

  3. Las cadenas son Unicode ahora, así como con todos los ejemplos de códigos antiguos que se encuentran, puede haber algunas suposiciones no válidas sobre los tamaños de caracteres que deberá reconocer.

El mayor obstáculo para componentes de escritura es que se espera que usted utilice diversos protegidas miembros de las clases que descienden de, pero los que con frecuencia no están documentados, por lo que tendrá que ser mucho más dispuesto a leer el código fuente de VCL para ver ejemplos de cómo se usan varios métodos.

+0

@Rob: Buena recomendación.El libro de Ray Konopka "Developing Custom Delphi Components" también fue bueno; No tengo una URL y no puedo consultar Amazon desde aquí (problema de proxy). IIRC, alguien mencionó que estaba considerando volver a publicarlo en PDF o Lulu ... –

+0

@Rob: Si sabes dónde puedo comprar este libro, estaría muy agradecido. Intenté @ Amazon, pero no tuve suerte. Entonces alguien? – Mihaela

+0

Mihaela, el enlace en mi respuesta va a Amazon, y dice que hay siete copias usadas. Si no puede obtenerlo allí, intente con otros vendedores de libros usados. –

3

La manera más fácil de hacer lo que desea es crear una nueva forma. Coloque las etiquetas y la imagen y colóquelos de la manera que desee; si satisface sus necesidades, colóquelas en un panel para que puedan moverse como una unidad.

Seleccione todos los componentes que desee incluir (e incluya el panel si elige usar uno), y luego haga clic en el elemento Componente en el menú principal del IDE y seleccione "Crear plantilla de componente". (Solo está habilitado si ha seleccionado componentes en el formulario actual.) Aparecerá un cuadro de diálogo que le pedirá un nombre para el nuevo componente y la página Paleta de componentes en la que desea que aparezca.

+0

+1 para una solución mucho más fácil, y una que olvidé. – skamradt

6

Puede pedir el libro de Ray Konopka Dev. Custom Delphi 3 Components - PDF por 25 $. Es un libro especializado sobre el tema y muy bueno también para principiantes.

Los principios fundamentales en los componentes de desarrollo es:

  1. si el componente es visual o no (¿Necesita un lienzo para pintar)

  2. qué necesita un identificador de ventana o no (visual o no visual)

Una vez que haya respondido esas preguntas, puede consultar el código fuente de Delphi para ver ejemplos.

+0

+1 para esto - es un gran libro. – robsoft

+0

+1 mejor libro que he encontrado sobre el tema. No dejes que el título de Delphi 3 te asuste, todavía es muy relacionado con cualquier versión de Delphi. Esperemos que algún día Ray tenga tiempo de actualizarlo. –

1

No se preocupe porque sus libros sean viejos.

Casi todo desde los viejos tiempos todavía funciona bien y lo poco que no se debe generalmente a conflictos de nombres o la adición de Unicode en la versión de 2009.

No son Microsoft, no van a romper el código anterior sin una buena razón. De hecho, tome algún código de los viejos días de DOS: suponiendo que no intente manipular la pantalla, es probable que se ejecute con una corrección mínima.

0

¡No se preocupe por sus libros antiguos! Desde v3, Delphi no ha cambiado mucho. Esta es la razón por la cual la mayoría de los programas compilados con D3 aún compila en D7 o incluso versiones más nuevas. Y si no se compila, probablemente necesite cambiar una o dos líneas, aquí y luego.

Le recomendaría buscar otros componentes MUY simples en Internet y ver cómo están hechos. Luego haz el tuyo y publícalo aquí. Deje que otros lo miren y sugieran mejoras o detecten errores.

Sobre el diseño de tu control:

1) tal vez usted no necesita esas dos etiquetas. Puedes pintar el texto directamente en la imagen. Si tiene muchos de esos componentes como dice, puede ahorrar un poco de memoria.

2) NO querrá tener muchas y muchas y muchas imágenes cargadas en una sola forma. La sobrecarga puede ser significativa. Lo que puede hacer es cargar las imágenes SOLAMENTE en imágenes visibles en la pantalla, y colocará en la pantalla SÓLO 5-10 imágenes (o cualquier cantidad de imágenes que pueda mostrar en el formulario sin salir de la pantalla). A medida que el usuario se desplaza hacia abajo, mantiene los mismos controles de TImage en la pantalla, pero carga nuevas (próximas) imágenes en ellos.

3) Es posible que no desee almacenar etiquetas y TImage en una matriz (supongo que es un TImage porque parece que desea mostrarlos en la pantalla, de lo contrario no necesitará etiquetas; debe explicar su problema en más detalles si lo entendí mal). Pero puede almacenar un TBitmap y el texto (que desea mostrar en las etiquetas) en su lugar.

Por lo tanto, es posible que necesite calcular la cantidad de CPU/sobrecarga de disco que crearán sus cientos de controles y la cantidad de memoria que necesitan. Si te mantienes bien por debajo de 1GB y el tiempo de carga es inferior a 10 segundos, entonces está relativamente bien. Si no es así, es posible que desee pensar en el diseño de su control antes de comenzar a implementarlo realmente.

Espero que haya sido útil. Nos vemos.

Cuestiones relacionadas