Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   plantilla (https://www.clubdelphi.com/foros/showthread.php?t=5310)

akane 17-11-2003 13:13:00

plantilla
 
Hola, soy nueva en esto del Delphi, hasta ahora he programado en c y c++, ¿alguien me puede decir si en object pascal tambien existen plantillas (las "templates" de c++)? y en caso de que existan, cómo se definen y se usan. Muchas gracias por adelantado

Al González 19-11-2003 00:02:22

¡Buen día a todos!

Akane:

En efecto, también en Delphi existen las plantillas.

Una manera de utilizarlas es definir en el proyecto una forma (formulario) que tenga las características comunes que heredarán dos o más formas descendientes. Una vez agregada al proyecto, puede crearse una forma derivada entrando a la ventana New Items (con la opción de menú File-New-Other o el botón New), seleccionando ahí la página que tiene el mismo nombre que el proyecto y escogiendo la forma plantilla con la opción Inherit seleccionada.

Es decir, todas las formas de un proyecto son plantillas potenciales a partir de las cuales se pueden definir nuevas formas. Así por ejemplo, podríamos tener en un proyecto una forma de clase TPlanFormAlum (Plantilla de Forma de Alumnos) con dos formas derivadas: TFormAlumFilo (Forma de Alumnos de Filosofía) y TFormAlumQuim (Forma de Alumnos de Química).

También existe el llamado Depósito de Objetos (Object Repository), que permite mantener una colección de objetos de uso frecuente para aprovecharse en diferentes aplicaciones, y con la posibilidad de tomarlos como plantillas base de nuevos objetos derivados.

Debo agregar que la implementación de plantillas va más allá del diseño visual. También los manejadores de eventos de una plantilla son heredados por sus clases descendientes. Inclusive se pueden redefinir, de manera que el manejador de evento en la forma descendiente pueda llamar al manejador de evento heredado de la plantilla padre. Esto con la palabra reservada Inherited, como sucede con los métodos virtuales.

En Delphi 5 hay un bicho al respecto: Si se define un método virtual en la plantilla padre, y éste es llamado por un manejador de evento redefinido de una forma descendiente, la llamada se realiza de forma inestable, derivando en error. La solución que encontré fue declarar el método virtual como Dynamic en lugar de Virtual. Afortunadamente, en Delphi 6, el problema ya no se presentó, por lo que pude volver a declarar los métodos virtuales de una plantilla como Virtual nuevamente.

Espero esto sea de utilidad. Seguimos en contacto.

Al González :).

akane 19-11-2003 22:40:49

Muchas gracias por la ayuda.


La franja horaria es GMT +2. Ahora son las 17:25:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi