FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour como se hace en Harbour?
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
como se hace en Harbour?
Posted: Fri Jul 08, 2016 10:11 PM
Hola,
esto lo hago en xharbour y me funciona ok, pero al quere pasarlo a harbour me da error :
Code (fw): Select all Collapse
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.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: como se hace en Harbour?
Posted: Sat Jul 09, 2016 06:57 AM

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...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: como se hace en Harbour?
Posted: Sun Jul 10, 2016 11:53 AM

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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: como se hace en Harbour?
Posted: Tue Jul 12, 2016 03:46 PM

Prueba asi a ver si te compila bien:

EXTEND CLASS TXBrowse WITH MESSAGE xBrwKeyDown IN LINE MsgInfo( "ok" )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: como se hace en Harbour?
Posted: Tue Jul 12, 2016 04:24 PM
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 (fw): Select all Collapse
#include "xhb.ch"


o mejor aun

Code (fw): Select all Collapse
#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.ch
https://github.com/harbour/core/blob/master/contrib/xhb/xhbcls.ch
salu2
carlos vargas
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: como se hace en Harbour?
Posted: Thu Jul 14, 2016 06:38 AM

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> )

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: como se hace en Harbour? (SOLUCIONADO)
Posted: Thu Jul 14, 2016 11:18 PM
Bueno, gracias a todos x la ayuda lo pude resolver de este modo :

1) incluir "xhbcls.ch"
2) yo tenia esto en xhrb :
Code (fw): Select all Collapse
OVERRIDE METHOD KeyDown IN CLASS TXBrowse WITH METHOD xBrwKeyDown

y ahora para harbour hice :
Code (fw): Select all Collapse
OVERRIDE METHOD KeyDown IN CLASS TXBrowse WITH xBrwKeyDown


De esta forma puedo sobreescribir el metodo del xbrowse sin tocar la clase.
Saludos.
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: como se hace en Harbour?
Posted: Tue Dec 19, 2017 11:48 PM
Ariel,

el fichero "xhbcls.ch", donde lo encuentro???

Para mi caso, modificar el m茅todo KeyDown de la clase TEDIT...

Code (fw): Select all Collapse
#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.
Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: como se hace en Harbour?
Posted: Wed Dec 20, 2017 12:26 AM
Code (fw): Select all Collapse
Function KeyDown( nKey, nFlags )

   local Self := HB_QSelf()

.../...
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: como se hace en Harbour?
Posted: Wed Dec 20, 2017 09:25 AM
Con OVERRIDE

Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "D:\XeviFWproves\include\xhbcls.ch"

//...
OVERRIDE METHOD KeyDown IN CLASS TEdit WITH xEditKeyDown
//...

FUNCTION xEditKeyDown( nKey, nFlags )
   Local Self := HB_QSelf()

   FWLOG ValType( Self ), ::ClassName()

   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 )


Con EXTEND CLASS
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "D:\XeviFWproves\include\xhbcls.ch"

//...
EXTEND CLASS TEdit WITH METHOD KeyDown
//...

FUNCTION KeyDown( nKey, nFlags )
   Local Self := HB_QSelf()

   FWLOG ValType( Self ), ::ClassName()

   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 )
Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: como se hace en Harbour?
Posted: Wed Dec 20, 2017 09:54 AM

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!!!

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: como se hace en Harbour?
Posted: Wed Dec 20, 2017 11:14 AM

El l铆mite es tu propia imaginaci贸n :-)

La belleza de Harbour es su enorme grado de libertad ;-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion