como se hace en Harbour?
Posted:
Fri Jul 08, 2016 10:11 pm
by Ariel
Hola,
esto lo hago en xharbour y me funciona ok, pero al quere pasarlo a harbour me da error :
- Code: Select all Expand view
Function ModifyClass()
OVERRIDE METHOD KeyDown IN CLASS TXBrowse WITH METHOD xBrwKeyDown
EXTEND CLASS TXBrowse WITH DATA bMyKeyDown
Return NIL
//----------------------------------------------------------------------------------------------------------------------------------------------------//
Function xBrwKeyDown( nKey, nFlags )
....
return
Gracias.
Re: como se hace en Harbour?
Posted:
Sat Jul 09, 2016 6:57 am
by Antonio Linares
Ariel,
Prueba a cambiar esta línea:
OVERRIDE METHOD KeyDown IN CLASS TXBrowse WITH METHOD xBrwKeyDown
así
EXTEND CLASS TXBrowse WITH MESSAGE xBrwKeyDown INLINE ...tu código...
Re: como se hace en Harbour?
Posted:
Sun Jul 10, 2016 11:53 am
by Ariel
Antonio,
gracias x responder, he puesto:
EXTEND CLASS TXBrowse WITH MESSAGE xBrwKeyDown IN LINE bMyKeyDown
y al compilar me dice:
Syntax Error "sintax error at 'CLASS'"
Saludos
Re: como se hace en Harbour?
Posted:
Tue Jul 12, 2016 3:46 pm
by Antonio Linares
Prueba asi a ver si te compila bien:
EXTEND CLASS TXBrowse WITH MESSAGE xBrwKeyDown IN LINE MsgInfo( "ok" )
Re: como se hace en Harbour?
Posted:
Tue Jul 12, 2016 4:24 pm
by carlos vargas
lo unico que habria que hacer es inlcuir el fichero cabezera y la libreria siguientes:
en los fuentes donde incluyas estas extenciones al lenguaje, haz:
- Code: Select all Expand view
#include "xhb.ch"
o mejor aun
- Code: Select all Expand view
#include "xhbcls.ch"
y el proceso de elnazado incluye la lib:
xhb.lib
no se si en los build de harbour de fivetech estan incluido, por lo que tocaria
revisar.
esto por que estas extenciones estan el la carpeta contrib de harbour, y no son parte del nucleo de harbour.
https://github.com/harbour/core/blob/master/contrib/xhb/xhb.chhttps://github.com/harbour/core/blob/master/contrib/xhb/xhbcls.chsalu2
carlos vargas
Re: como se hace en Harbour?
Posted:
Thu Jul 14, 2016 6:38 am
by Biel EA6DD
La solución que te aporta Carlos te funcionará correctamente.
También puedes hacerlo directamente con el uso de las funciones,
__objModMethod( <oObject>, <cMethodName>, <nFuncPtr> ) //<nFunCprt> se debe pasar por referencia
__objAddData( <oObject>, <cDataName> )
Re: como se hace en Harbour? (SOLUCIONADO)
Posted:
Thu Jul 14, 2016 11:18 pm
by Ariel
Bueno, gracias a todos x la ayuda lo pude resolver de este modo :
1) incluir "xhbcls.ch"
2) yo tenia esto en xhrb :
- Code: Select all Expand view
OVERRIDE METHOD KeyDown IN CLASS TXBrowse WITH METHOD xBrwKeyDown
y ahora para harbour hice :
- Code: Select all Expand view
OVERRIDE METHOD KeyDown IN CLASS TXBrowse WITH xBrwKeyDown
De esta forma puedo sobreescribir el metodo del xbrowse sin tocar la clase.
Saludos.
Re: como se hace en Harbour?
Posted:
Tue Dec 19, 2017 11:48 pm
by Xevi
Ariel,
el fichero "xhbcls.ch", donde lo encuentro???
Para mi caso, modificar el método KeyDown de la clase TEDIT...
- Code: Select all Expand view
#include "xhbcls.ch"
OVERRIDE METHOD KeyDown IN CLASS TEdit WITH xEditKeyDown
FUNCTION xEditKeyDown( nKey, nFlags )
IF nKey == VK_UP
::oWnd:GoPrevCtrl( ::hWnd )
return 0 // We don't want API default behavior
ELSEIF nKey == VK_RETURN .or. nKey == VK_DOWN
::oWnd:GoNextCtrl( ::hWnd )
return 0 // We don't want API default behavior
ENDIF
return ::Super:KeyDown( nKey, nFlags )
Seria así???
al compilar me da errores
sintax error 'METHOD' y que no encuentra la variable self,
Es por falta del fichero "xhbcls.ch" ???
Gracias.
Re: como se hace en Harbour?
Posted:
Wed Dec 20, 2017 9:54 am
by Xevi
Además... UIiiii lo que he visto!!!
EXTEND CLASS TEdit WITH DATA cMiData
Me puedo permitir el "lujo" de crear/sobrecargar de DATAs a una Clase.
Por ejemplo crearme una clase TAppData, e ir creando datas que voy a utilizar en la aplicación, ya que estoy acostumbrado de esta manera... o eso sobrecarga la aplicación si utilizo una sola clase con por.ej. 20 o 50 datas???
Mejor utilizar funciones para no sobrecargar la aplicación???
No se, pensando en datos que estan guardados en un fichero, no estar abriendo/cerrando el fichero cada vez que voy a consultar un campo que lo voy a estar utilizando en cualquier parte de la aplicación, guardo esa data (vaya, como si estuviera utilizando una variable pública)...
Y... para entorno de MariaDB, abro una conexión, la guardo en una data de la clase AppData, y ya la tengo accesible en toda la aplicación, hasta que no la cierre.
No se, ¿cómo lo veis?
Dadme opniniones, necesito escuchar!!!
Re: como se hace en Harbour?
Posted:
Wed Dec 20, 2017 11:14 am
by Antonio Linares
El límite es tu propia imaginación
La belleza de Harbour es su enorme grado de libertad