como se hace en Harbour?

como se hace en Harbour?

Postby Ariel » 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: 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.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: como se hace en Harbour?

Postby Antonio Linares » Sat Jul 09, 2016 6: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41289
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: como se hace en Harbour?

Postby Ariel » 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
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: como se hace en Harbour?

Postby Antonio Linares » Tue Jul 12, 2016 3: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41289
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: como se hace en Harbour?

Postby carlos vargas » Tue Jul 12, 2016 4: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: 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.ch
https://github.com/harbour/core/blob/master/contrib/xhb/xhbcls.ch
salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1682
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: como se hace en Harbour?

Postby Biel EA6DD » Thu Jul 14, 2016 6: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/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: como se hace en Harbour? (SOLUCIONADO)

Postby Ariel » 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: 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.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: como se hace en Harbour?

Postby Xevi » 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: 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.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: como se hace en Harbour?

Postby cnavarro » Wed Dec 20, 2017 12:26 am

Code: Select all  Expand view

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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: como se hace en Harbour?

Postby Xevi » Wed Dec 20, 2017 9:25 am

Con OVERRIDE

Code: Select all  Expand view

#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: Select all  Expand view

#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!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: como se hace en Harbour?

Postby Xevi » Wed Dec 20, 2017 9: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!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: como se hace en Harbour?

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 41289
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 15 guests