Movhandler(obr) de tbrowse harbour

02/04/2010

Hoy encotre que el la funcion Movhandler(obr) , genera un error en las
consultas que no generan un parametgro de retorno , muestra error en:

colobj := mybrow:GETCOLUMN(Col_Recno)
block := colobj:BLOCK
reg_aux:= EVAL(block) // Retrieve data using the column
block
exit

ya que como solo son de consulta no tenia definido el parametro
Col_recno a traves de la funcion externa

store FIELDPOS("RECNO") to Col_Recno

No se necesita para las consultas ya que no busco el registro de
retorno, para editar.

Soluciones el problema creando una nueva funcion HnadlerC(obr)
de la siguiente manera:

******************************************************************************
* Procedimiento Manejador de teclas de
* para consultas
*******************************************************************************
FUNCTION HandlerC(mybrow)

LOCAL key
do while .T.

while (!mybrow:STABLE) // (re)build screen,
mybrow:STABILIZE() // wait for stabilizing
if NEXTKEY() != 0 // optional:
exit // manage async.input
endif
enddo

key := INKEY(0) // get key pressed
do case
case key=K_ESC .or. key=K_RBUTTONDOWN // escape
exit // terminates browsing
case key = K_RETURN .or. key == K_LBUTTONDOWN // return, enter
exit
case key = K_UP .or. key = K_CTRL_E // cursor up
mybrow:UP() // = previous record
case key = K_DOWN .or. key = K_CTRL_X // cursor down
mybrow:DOWN() // = next record
case key = K_PGUP .or. key = K_CTRL_R // page-up
mybrow:PAGEUP() // = previous window
case key = K_PGDN .or. key = K_CTRL_C // page-down
mybrow:PAGEDOWN() // = next windwow
case key = K_LEFT .or. key = K_CTRL_S // cursor left
mybrow:LEFT() // = column left
case key = K_RIGHT .or. key= K_CTRL_D // cursor right
mybrow:RIGHT() // = column right
case key = K_MOUSEWHEELDN // mouse wheel down, next record
mybrow:DOWN()
case key == K_MOUSEWHEELUP // mouse wheel up + modifier
mybrow:UP() // = previous record
endcase
enddo
return

***************************************************************************
que lo unico que hace es permitir el despalzamiento a traves del
objeto de la tabla oBr.

Se modifico para que todas las consultaas de tablas usen el TBrowseDB
con las funcinoes anteriores antes descritas, he notado que el TBrowse
arranca a mostrar las columnas muy a la derecha del valor inicial de
la columna 1, no he podido que me funcione mas ajustgada , pues pierdo
casi todo un campo, hay que seguir investigando que error tengo [*].

Creo que ya lo encontre, el TBrowse trata de copar la pantalla con el
maximo de caracter y campos completos, si el campo que sigue al ultimo
mostrado es mas grande que el espacio que tiene para completar la
informacion, lo que hace es ajustar toda la pantalla, por eso a veces
deja tanto espacio a la derecha.

Sigo teniendo algunos problemas con los nombre de las variables y de
los comandos, pues en FlagShi despues del 10 caracter no lo reconocia
y XHarbour si, por lo tanto cuando use Centro_Nome y Centro_Nom para
xharbour son distintos y para FlagShip son iguales lo propio me
ocurrio con HandlerCons() y HandlerC()


Aun sigo con problemas en los remplazos que dependen de un FOR o
de un ALL, los de all ya los soluciones haciendo un WHILE como dije
anteiormente, pero aquellos remplazos que dependen de un FOR trabajan
erraticamente una veces funcionan y otras dice que el sistma no pudo
ser aseurado o que tengo que configurar el rlock()

este ejemoplo facha cada 1 de 2


do PathDiar with Mes_Trab,Mes_Aux,XDiario
select 1
use &XDiario index &XIndi1,&XIndi2,&XIndi3 alias MOVIMIENTO

select MOVIMIENTO
set order to 0
rlock to verror
replace FUENTE with Fte_Tmp_N for FUENTE = Fte_Tmp_V .and.;
(RECNO >= recno1 .and. RECNO <= recno2) unlock pero : do PathDiar with Mes_Trab,Mes_Aux,XDiario select 1 use &XDiario index &XIndi1,&XIndi2,&XIndi3 alias MOVIMIENTO select MOVIMIENTO set order to 0 rlock to verror replace CUENTA with CUENT_H for CUENTA = CUENT_D .and. ; (RECNO >= recno1 .and. RECNO <= recno2) unlock no falla nunca. Me asegure que no hubiera archivos abiertos, que los indice estuvieran bien, lo unico que cambia es la variable que se remplaza y no funciona. Ya encontre el problema lo que sucede es que XHarbour tiene 2 comnandos para cerrar y abrir bases de datos que requieran actulizaciones masivas como : replace ... for replace all update all recall append from delete for son FLock() y Dbunlock , en FlagShip rlock y unlock servian para todos los casos. el comando aterior quedo funcionando correctamente, asi: select MOVIMIENTO set order to 0 Flock() to verror replace CUENTA with CUENT_H for CUENTA = CUENT_D .and. ; (RECNO >= recno1 .and. RECNO <= recno2) Dbunlock Descargue el ambiente grafico de XHarbour GTK+, xbgtk-0.5 para empezar a hacer pruebas del ambiente grafico asi: # bunzip2 xbgtk-0.5.tar.bz2 # tar xvfPp xbgtk-0.5.tar creo el directorio xbgtk-0.5 me cambie al directorio # cd xbgtk-0.5 ejecuto el sistema para compilar # ./configure me mostro el siguiente mensaje checking for pkg-config... /usr/bin/pkg-config checking for GTK+ - version >= 2.8.0... no
*** Could not run GTK+ test program, checking why...
*** The test program failed to compile or link. See the file
config.log for the
*** exact error that occured. This usually means GTK+ is incorrectly
installed.
configure: error:
*** GTK+ 2.8.0 or better is required. The latest version of
*** GTK+ is always available from ftp://ftp.gtk.org/.


En el cual me dice que la version de GTK+ no es la correcta, me
parecio raro, puesto que tengo la version de Mandriva 2010, y supuesta
mente el xbgtk no habia sido actualizado desde el 2006, segun decia en
la pagina del proppio XBGTK.

Sin embargo le pedi al sistema manejador de paquetes del Mandriva que
me actualizara el paquete GTK+ pues la version que trae el sistema
es la 2.0.0 , no me funciono, entonces descargue de forma
independiente el GTK+ y lo descomprimi

Recomiendas que antes de ejecutar estas librerias se bajen y
configuren desde el mismo sitio de GTK+ , glib y pango.

# bunzip2 gtk+-2.18.0.tar
# tar xvfPp gtk+-2.18.0.tar
# cd gtk+-2.18.0
# ./configure
# make

Descargue tambien las librerias glib-2.22.0.tar

# bunzip2 glib-2.22.0.tar.bz2
# tar xvfPp glib-2.22.0.tar
# cd glib-2.22.0
# ./configure
# make

Tambien las librerias pango

# bunzip2 pango-1.26.0.tar.bz2
# tar xvbfPp pango-1.26.0.tar
# cd pango-1.26.0
# ./configure
# make

una vez instalado exitosamente estas librerias procedi a instalar el
GTK+ me mostro el siguiente mensaje

checking pkg-config is at least version 0.9.0... yes
checking for BASE_DEPENDENCIES... configure: error: Package
requirements (glib-2.0 >= 2.21.3 atk >= 1.13.0 pango >= 1.20
cairo >= 1.6) were not met:

No package 'atk' found
No package 'cairo' found
No package 'pango' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables
BASE_DEPENDENCIES_CFLAGS
and BASE_DEPENDENCIES_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

donde dice que hay que instalar glib , cairo , atk y pango

descargo de sus respectivos sitios cairographics y atk

# tar zxvfpP cairo-1.9.6.tar.gz,
# cd cairo-1.9.6
# ./configure
# make

# tar zxvfPp atk-1.30.0.tar.gz
# cd atk-1.30.0
# ./configure
# make

ejecuto de nuevo la compilacion de GTK+ y me muestra el mensaje
anterior pero me dice que ya encontro cairo, pero sigue sin
encontrar atk y pango

No package 'atk' found
No package 'pango' found


Me toco dejar aqui, pues con la actualizacion de todos estos archivos,
me desconfiguro el linux y me toco , hacer una actualizacion de todo
el sistema.
Me toca estudiar porque no funciona el GTK+ que viene el el madriva
2010 [*]

Entretando me toca verificar todas las intrucciones que estan
involucradas con remplazos masivos como replace all, recall etc.

afortunadamente yo no uso casi esta estuctura, tengo mas problemas con
replace ... for ,Delete ... for y append from que si lo uso mas a
continuamente.

Comentarios

Entradas populares