![]() |
![]() |
| 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
|
|||
|
|||
|
y si usas Inherited nombre_metodo ¿?
|
|
#2
|
||||
|
||||
|
No, porque quien hace la llamada es un procedimiento que nada tiene que ver con las clases (recibe el objeto como parámetro).
Creo que, después de pensarlo, he encontrado un punto de partida. El siguiente método es el de la clase "base":
Lo que hace es registrar un procedimiento (pasado en el parámetro aFunc) para que sea utilizado como respuesta al evento 'aName'. El procedimiento 'gtk_signal_connect' recibe, primero, el puntero al objeto GTK (algo así como el handle de un control Windows), el nombre del evento, el puntero de la función o procedimiento de respuesta del evento (no puede estar dentro de una clase) y un valor que será pasado a la función de respuestas al evento. Yo le paso la referencia al objeto para recuperarlo más tarde. Así, para el evento "destroy" utilizo la siguiente llamada:
El método 'sDestroy' es un método virtual. El problema está en que, aunque sobrecargue (OVERRIDE) dicho método en una clase hija, el procedimiento '_signal_destroy_' sigue llamando al método de la clase base (en este caso TGTK_OBJECT). Creo que el problema está en utilizar 'SELF' al llamar a 'gtk_signal_connect' pero, ¿de qué otra forma podría hacerlo sino? |
|
#3
|
||||
|
||||
|
Solucionado
Me merezco unos capones por lerdo y tormo. Resulta que el código funciona perfectamente tal como está. ¿Cuál era el problema, entonces? Pues que a la hora de crear el objeto lo creaba de la clase base en lugar de la derivada, y por supuesto que llamaba a los métodos de la clase base...
![]() Espero que después de este error estúpido me permitan continuar participando en el foro. |
|
#4
|
|||
|
|||
|
Me imagino que conecerás el wrapper de GTK con freepascal. Está bastante avanzado. ¿No te sirven?
__________________
-¿no es usted la hija de un famoso banquero?. -pues no. -Perdone, pero por un momento pensé que me había enamorado de usted. |
|
#5
|
||||
|
||||
|
Encontré este en sourceforge y no me gusta. El código fuente es muy raro y no me extraña que le salgan esos bugs que dice la documentación (utiliza un preprocesador para generar el código fuente
). Jamás vi nada igual.Con la versión que viene en el FreePascal que me bajé (creo que es la última estable) sólo viene una traducción directa de C a Pascal. También viene la FCL (Free Component Library) que, al parecer, se basa en GTK pero tampoco me gusta... En fin, cuando termine el programa que estoy haciendo tal vez publique mi wrapper para ObjectPascal/Delphi a ver si a alguien más le gusta. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿Qué son los métodos virtuales y los métodos de clase? | David | OOP | 4 | 27-07-2019 23:04:30 |
| Virtual Replay - Repetición Virtual de los Goles del Mundial | delphi.com.ar | La Taberna | 0 | 26-06-2006 17:15:07 |
| Llamar a un método sin tener instacia. | piccolo2101 | Varios | 5 | 15-12-2005 10:14:35 |
| Como hacer un teclado virtual | Andres_Franco | DelphiPACK | 2 | 07-01-2004 09:23:12 |
| ¿Cómo puedo llamar al método heredado de una clase que no es el ancestro directo? | sarackganda | OOP | 4 | 15-12-2003 22:19:49 |
|