Error en XBROWSE

Post Reply
infosys
Posts: 59
Joined: Tue Jan 31, 2006 1:32 pm

Error en XBROWSE

Post by infosys »

La clase funciona sin problemas, pero cuando intento agregar una nueva columna al browse, luego de que este ya fue creado y desplegado en pantalla, me arroja un error, en el metodo LASTDISPLAYPOS().
Intento explicar mejor: mi aplicacion ofrece al operador ir agregando columnas a un browse existente por ende cuando se ejecuta esta opcion, cierro el DBF agrego el nuevo campo luego lo abro de nuevo, creo en el browse la nueva columna e intento refrescar los datos, ahi es donde se produce el problema.
Copio el código para ver si alguien me puede indicar que esta mal o que falta.

Code: Select all | Expand

        oCol:=oBrw:AddCol()    oCol:cHeader:="Nueva Columna"    oCol:bStrData:=FieldWBlock(tran(LECTURAS->newcol,"9999999.99999")    oBrw:Refresh() 


El Error que arroja es el siguiente:
Application
===========
Path and name: C:\INFOSQL1\qcstd.exe (32 bits)
Size: 1,755,136 bytes
Time from start: 0 hours 0 mins 8 secs
Error occurred at: 11/03/2009, 11:08:06
Error description: Error BASE/1081 Error de argumento: +
Args:
[ 1] = U
[ 2] = N 2

Stack Calls
===========
Called from: qcstd.prg => TXBROWSE:LASTDISPLAYPOS(1336)
Called from: qcstd.prg => TXBROWSE:MOUSEMOVE(2223)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: CONTROL.prg => TXBROWSE:HANDLEEVENT(1322)
Called from: WINDOW.prg => _FWH(3128)
Called from: => WINRUN(0)
Called from: WINDOW.prg => TWINDOW:ACTIVATE(881)
Called from: qcstd.prg => MAIN(429)

Este codigo me ha funcionado muy bien utilizando TsBrowse, ahora que intento utilizar xBrowse, me trae problemas al refrescar la pantalla.
Desde ya muy agradecido por información o sugerencia al respecto.

Miguel
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Error en XBROWSE

Post by Daniel Garcia-Gil »

Infosys

Revisando el error y creo que lo puedes solventar agregandole el ancho a la columna a añadir, vere de que forma se podria solventar desde la clase

creo que solo te faltaria incluir

Code: Select all | Expand

oCol:nWidth := 40


o el ancho que tu decidas es solo un ejemplo

personalmente usaria

Code: Select all | Expand

oCol:bStrData:={|| tran(LECTURAS->newcol,"9999999.99999") }
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: Error en XBROWSE

Post by RenOmaS »

Si cierras la dbf
es mejor intentar hacer esto

Code: Select all | Expand

oBrowse:Hide()//cierras tu dbf// agregas tu columnas..................oBrowse:Show() 
Saludos/regards
RenOmaS

skype: americo.balboa
infosys
Posts: 59
Joined: Tue Jan 31, 2006 1:32 pm

Re: Error en XBROWSE

Post by infosys »

Gracias por las sugerencias, pero el error persiste, el mensaje es el mismo que indique, y ocurre en este metodo:

Code: Select all | Expand

METHOD LastDisplayPos( lComplete ) CLASS TXBrowse   local nWidth, nMaxWidth, nPos, nLen   DEFAULT lComplete := .f.   nPos      := 1   nMaxWidth := ::BrwWidth()   nLen      := len( ::aDisplay )   if ::lRecordSelector      nWidth := RECORDSELECTOR_WIDTH   else      nWidth := 0   endif   do while nPos <= nLen .and. nWidth < nMaxWidth      nWidth += ::ColAtPos( nPos++ ):nWidth + COL_SEPARATOR   enddo   nPos --   if lComplete      nPos--   endif   nPos := Max( 1, nPos )return nPos 


La linea: nWidth += ::ColAtPos( nPos++ ):nWidth + COL_SEPARATOR es donde se produce el error, el cual dice:
Error description: Error BASE/1081 Error de argumento: +
Args:
[ 1] = U
[ 2] = N 2

Esto se produce cuando luego de haber agregado la columna, abierto el dbf, etc. le ordeno un oBrwose:Refresh()

No logro sacarle el error.

Saludos
Miguel
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Error en XBROWSE

Post by Daniel Garcia-Gil »

Infosys...

El error se produce pq en la columna no se le ha definido el ancho ( nWidth ), por eso te comente que agregaras oCol:nWitdh := 40
A mi me trabaja perfectamente bien este ejemplo

Te dejo el link para que descargues el EXE y lo pruebes tu mismo

http://www.sitasoft.com/fivewin/test/testbrw1.rar

Code: Select all | Expand

#include "FiveWin.ch"#include "xbrowse.ch"REQUEST DBFCDXfunction main()local oDlglocal oBrwlocal cAliaslocal oBarcAlias = "customer"use customer alias (cAlias) new via "dbfcdx"   DEFINE window oDlg title "TEST" from 0,0 to 400, 600 pixel   define buttonbar oBar of oDlg size 30,30      define button of oBar action agrega( oBrw, cAlias )   @ 0,0 XBROWSE oBrw OF oDlg ;      COLUMNS "First", "Salary", "state" ;      HEADERS nil, nil, "State" ;      JUSTIFY .t., nil, .F., .T. ;      ALIAS cAlias AUTOSORT LINES CELL           oDlg:oClient := oBrw      oBrw:CreateFromCode()   ACTIVATE window oDlg  return nil procedure Agrega( oBrw, cAlias )local oCol       oCol:=oBrw:AddCol()    oCol:cHeader:="Nueva Columna"    oCol:bStrData:={|| transform( ( cAlias )->age,"9999999.99999") }    oCol:nWidth := 100    oBrw:Refresh()return 
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Post Reply