Error en XBROWSE

Error en XBROWSE

Postby infosys » Wed Mar 11, 2009 2:22 pm

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 view
   
    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
infosys
 
Posts: 59
Joined: Tue Jan 31, 2006 1:32 pm

Re: Error en XBROWSE

Postby Daniel Garcia-Gil » Tue Mar 17, 2009 3:13 am

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 view
oCol:nWidth := 40


o el ancho que tu decidas es solo un ejemplo

personalmente usaria
Code: Select all  Expand view
oCol:bStrData:={|| tran(LECTURAS->newcol,"9999999.99999") }
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Error en XBROWSE

Postby RenOmaS » Tue Mar 17, 2009 9:16 am

Si cierras la dbf
es mejor intentar hacer esto

Code: Select all  Expand view

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

skype: americo.balboa
User avatar
RenOmaS
 
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: Error en XBROWSE

Postby infosys » Tue Mar 17, 2009 11:26 am

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


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
infosys
 
Posts: 59
Joined: Tue Jan 31, 2006 1:32 pm

Re: Error en XBROWSE

Postby Daniel Garcia-Gil » Tue Mar 17, 2009 1:30 pm

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 view
#include "FiveWin.ch"
#include "xbrowse.ch"

REQUEST DBFCDX
function main()

local oDlg
local oBrw
local cAlias
local oBar

cAlias = "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
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 30 guests