Quisiera proponer un cambio que hace tiempo lo tengo pensado porque me ha traído uno que otro inconveniente cuando programas con clases.
En Fivewin.ch se usa "Self" como nombre de un parametro en algunos codeblocks. Eso acarrea algún inconveniente cuando queremos usar comandos dentro de los métodos de una clase, porque en ese contexto el mismo lenguaje define Self, y se produce alguna situación ambígua, que se podría evitar renombrando el parámetro.
- Code: Select all Expand view
#include 'hbclass.ch'
// MyFive.ch
#translate Self => __Self__
#include 'FiveWin.ch'
#untranslate Self
CLASS MiClase FROM TDialog
DATA oBB
Method New() Constructor
Method Close() INLINE ::End()
END CLASS
METHOD New( cResource ) CLASS MiClase
DEFINE DIALOG Self RESOURCE cResource
REDEFINE BTNBMP ::oBB ID ID_CANCEL OF Self ACTION ::Close()
Return Self
Entiendo que ese cambio es incompatible para atrás si se ha usado a Self o :: dentro del codeblock para referir al control definido, pero no creo que hayan muchos casos
porque, en general, donde se usa el comando la referencia al objeto se puede obtener directamente usando la variable local que recoge el control.
En mi caso he probado de redefinir con translate Self con otro nombre en los comandos
- Code: Select all Expand view
// MyFive.ch
#xtranslate Self => __Self__
#include 'FiveWin.ch'
#xuntranslate Self => __Self__
pero no me ha funcionado, solo me queda modificarlos a mano.
Otra cosa que tambien me gustaría sería que en fivewin se usase el método IsKindOf( <class> ) en lugar de ClassName en los controles, ya que si creamos una subclase muchas veces hay que modificar el codigo fuente original de FW para que las clases originales mantengan el comportamiento, con la complicación que eso conlleva al cambiar de versión de FiveWin.
Espero que te resulten interesantes las sugerencias, que a mí me vendrías de maravillas
Un saludo,
Carlos.