TxBrowse error en casilla de verificación

TxBrowse error en casilla de verificación

Postby Pedro » Mon Feb 11, 2013 4:21 pm

Hola a todos

En este código

Code: Select all  Expand view  RUN
     aCampos := {oRsClien:Fields( 0):NAME, oRsClien:Fields( 1):NAME,;
                  oRsClien:Fields( 2):NAME, oRsClien:Fields( 3):NAME,;
                  oRsClien:Fields( 4):NAME, oRsClien:Fields( 5):NAME ,;
                  oRsClien:Fields( 6):NAME, oRsClien:Fields( 7):NAME,;
                  oRsClien:Fields( 8):NAME, oRsClien:Fields( 9):NAME,;
                  oRsClien:Fields(10):NAME, oRsClien:Fields(11):NAME,;                  
                  oRsClien:Fields(12):NAME, oRsClien:Fields(13):NAME  }
                   
      oBrw := TXBrowse():New( oWChild )
      oBrw:SetAdo( oRsClien, .T.,.T.,aCampos)
     
      WITH OBJECT oBrw
           :lColDividerComplete := .t.
           :nMarqueeStyle       := 3
           :nColDividerStyle    := 1
           :nHeaderLines        := 2
           :lFooter             := .t.
           :nStretchCol         := 1
           :bClrSelFocus  := { || { CLR_BLACK, aSelGrad } }
           :bClrRowFocus  := { || { CLR_BLACK, aRowGrad } }  
           :bClrStd       := {|| IIF(oRsClien:AbsolutePosition % 2 == 0,{ CLR_BLACK, RGB( 224, 236, 255 ) }, { CLR_BLACK, RGB( 189, 211, 253 ) } )}
           :CreateFromCode()  
           :Adjust()
           :l2007 := .t.
      END
      For nFor := 1 to len( oBrw:aCols )
          oCol := oBrw:aCols[ nFor ]
          oCol:nEditType := 0
          If oCol:Value = NIL
             oCol:cEditPicture := " "
          EndIf  
          oCol:blDClickData := {|| CtrCliente(ID_MOD,oWChild,oBrw),oBrw:Refresh() }
      next

      oBrw:aCols[13]:SetCheck ({"CHECKON","CHECKOFF"} )
      oBrw:aCols[14]:SetCheck ({"CHECKON","CHECKOFF"} )
      oWChild:oClient := oBrw
 


Se produce el error que os pongo a continuación, cuando intento visualizar las columnas 13 y 14 que, como veis, son dos casillas de verificación.
No preguntéis por los bitmaps, están en los recursos. La tabla tiene los campos 13 y 14 como verdadero/falso (es una base de datos de Acces, con diferentes tablas)
El módulo está trabajado con ADO puro y duro, ya que le escribí hace tiempo a Adolfo Lagos, por si tenía su Adobase algo más actualizado que el que yo tengo ( última actualización año 2008) y algunos ejemplos y al no recibir contestación me incliné por hacerlo así.
El error que digo es el siguiente :
Error description: Error BASE/1004 Class: 'LOGICAL' has no exported method: EVAL
Args:
[ 1] = L .F.

Stack Calls
===========
Called from: => EVAL( 0 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9622 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9574 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1434 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1253 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1666 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 11649 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3154 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG( 426 )
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS( 31 )
Called from: => EVAL( 0 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9622 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9574 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1434 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1253 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1666 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 11649 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3154 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 270 )
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG( 426 )
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS( 31 )
Called from: => EVAL( 0 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTCELL( 9622 )
Called from: .\source\classes\XBROWSE.PRG => TXBRWCOLUMN:PAINTDATA( 9574 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:PAINT( 1434 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:DISPLAY( 1253 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1666 )
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 11649 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3154 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 980 )
Called from: D:\PROYEC~4\Pizarro\SOURCE\geshinic.prg => MAIN( 155 )


La verdad es que me escama este error, ya que he verificado con otro programa que tengo con ADO y Acces y no tengo ningún problema ni me da este error.
Este error sólo se produce en las líneas con el SetCheck.

A ver si me podéis iluminar un poco
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: TxBrowse error en casilla de verificación

Postby joseluisysturiz » Mon Feb 11, 2013 6:17 pm

Pedro, disculpa mi ignorancia si digo algo que no tenga logica, pero veo un detalle, veo que inicias los campos desde 0 hasta 13 y no desde 1 hasta 14 y revisastes bien si estan encajando los campos en las columnas correspondientes.? porque por lo visto el valor de la col.14 no es de tipo logico, nose, es lo que veo a siemple vista y como estas usando oCol:bEditValue de las col.13 y 14.? espero te de alguna pista para solucionar tu problema, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: TxBrowse error en casilla de verificación

Postby Pedro » Mon Feb 11, 2013 6:27 pm

Estimado amigo José Luis, en ADO los campos no empiezan en el número 1 sino en el 0, de ahí que aunque tu veas en el arreglo del 0 al 13, sin embargo en el Browse
ves la columna 14, ya que si cuentas, del cero al trece hay catorce elementos.
Ahora mismo acabo de hacer unas pruebas para ver si el tipo de campo viene correcto y, si, viene correcto con el tipo 11 que es el de campo lógico, lo que no entiendo es por qué no me coge la evaluación del verdadero o falso en el setcheck.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: TxBrowse error en casilla de verificación

Postby joseluisysturiz » Mon Feb 11, 2013 6:36 pm

Pedro wrote:Estimado amigo José Luis, en ADO los campos no empiezan en el número 1 sino en el 0, de ahí que aunque tu veas en el arreglo del 0 al 13, sin embargo en el Browse
ves la columna 14, ya que si cuentas, del cero al trece hay catorce elementos.
Ahora mismo acabo de hacer unas pruebas para ver si el tipo de campo viene correcto y, si, viene correcto con el tipo 11 que es el de campo lógico, lo que no entiendo es por qué no me coge la evaluación del verdadero o falso en el setcheck.


Entendido y aprendido algo sobre ADO, si me fije que habian 14 campos, solo me extraño que fuera de 0-13 y no de 1-14, nunca he manejado ADO, ahora has probado hacer la conversion tu mismo en el bStrData o bEditValue .t./.f..? algo como oCol:bEditValue := {|| IIF( valor_campo = valor, .f., .t. ) }, no sea que no te este reconociendo el valor como logico. saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: TxBrowse error en casilla de verificación

Postby Pedro » Mon Feb 11, 2013 6:52 pm

Bueno pues visto el problema y esto ya es cosa del master Antonio o Daniel, ya que poniendo el xBrowse.prg de la versión 12.04 a continuación del módulo main
funciona perfectamente el browse.
Y la única diferencia que veo es esta :
Líneas 9265 a 9280 de la versión 12.04
Code: Select all  Expand view  RUN
 if ::bStrData != nil .and. !::hChecked
      cData := Eval( ::bStrData )
      if ValType( cData ) != 'C'
         cData := cValToChar( cData )
      endif
      if ! Empty( ::nDataStrAlign )
         cData := AllTrim( cData )
      endif
      if isrtf( cData )
         cData := "<RichText>"
      elseif isGtf( cData )
         cData := GtfToTxt( cData )
      endif
   else
      cData := ""
   endif


estas mismas líneas están de la 9621 a la 9636 en la versión 12.06 y están así
Code: Select all  Expand view  RUN
  if ::bStrData != nil //.and. !::hChecked
      cData := Eval( ::bStrData )
      if ValType( cData ) != 'C'
         cData := cValToChar( cData )
      endif
      if ! Empty( ::nDataStrAlign )
         cData := AllTrim( cData )
      endif
      if isrtf( cData )
         cData := "<RichText>"
      elseif isGtf( cData )
         cData := GtfToTxt( cData )
      endif
   else
      cData := ""
   endif
 


la diferencia es que han comentado el hChecked y en el eval que viene a continuación casca el programa.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: TxBrowse error en casilla de verificación

Postby Pedro » Mon Feb 11, 2013 6:55 pm

Disculpa José Luis no vi tu respuesta.

El campo es tipo lógico, y me lo reconoce como lógico, el problema es lo que acabo de comentar antes, que en la versión 12.06 han anulado la comprobación del hChecked
Ahora intentaré poner ese módulo de la clase a ver si funciona dejando el hChecked en su sitio.

EDITO

el módulo de la clase funciona, no da el error. A ver si Antonio o Daniel nos indican el motivo por el que se comentó el hChecked y a que afecta el ponerlo.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 88 guests