TDolphin + XBrowse drag column

TDolphin + XBrowse drag column

Postby Francisco Valério » Tue Aug 02, 2016 3:12 pm

Eu estou com um TXBrowse que utiliza um objeto da classe TDolphin para apresentar os valores de uma tabela. As opções (que eu conheço) para editar as colunas do browse estão todas setadas como falso:
Code: Select all  Expand view  RUN

oBrw:lAllowColReGroup      := .f.
oBrw:lAllowColHiding       := .f.
oBrw:lAllowRowSizing       := .f.
oBrw:lAllowColSwapping     := .f.
 

O problema que está sendo enfrentado é que, ao clicar em um dos cabeçalhos de coluna do browse, cujos valores são numéricos, e arrastar este para cima de uma caracter, está causando erro internamente na classe TDolphin:
Application
===========
Path and name: C:\base\getpdv.exe (32 bits)
Size: ********* bytes
Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6406)
FiveWin Version: FWHX 13.07
Windows version: 6.2, Build 9200

Time from start: 0 hours 0 mins 14 secs
Error occurred at: 02/08/16, 11:32:20
Error description: Error BASE/2022 Argument error: ALLTRIM
Args:
[ 1] = N 13

Stack Calls
===========
Called from: => ALLTRIM( 0 )
Called from: .\source\prg\tdolpsrv.prg => CLIPVALUE2SQL( 1955 )
Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SEEK( 1376 )
Called from: T:\new\fivewin\xbrowse.prg => TXBRWCOLUMN:SETORDER( 11902 )
Called from: T:\new\fivewin\xbrowse.prg => TXBRWCOLUMN:HEADERLBUTTONUP( 10768 )
Called from: T:\new\fivewin\xbrowse.prg => TXBROWSE:LBUTTONUP( 3520 )
Called from: T:\new\fivewin\control.prg => TCONTROL:HANDLEEVENT( 1725 )
Called from: T:\new\fivewin\xbrowse.prg => TXBROWSE:HANDLEEVENT( 12246 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3234 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 274 )
Called from: T:\new\fivewin\browseprodutos.PRG => BROWSEPRODUTOS( 257 )

Verifiquei no código fonte disponibilizado e encontrei um local onde é verificado o tipo da variável:
Code: Select all  Expand view  RUN

SWITCH cType
   CASE "N"
   CASE "I"

      if Value != NIL .OR. lNoNull
         cValue := AllTrim( Str( Value ) )
      else
         cValue := "NULL"
      endif

      EXIT

   CASE "C"
      if ! Empty( Value ) .OR. lNoNull
         cValue := cTxt + AllTrim( Value ) + cTxt
      else
         cValue := "NULL"
      endif
      EXIT
...
 


Esta variável cType é um parâmetro, passado como: ::aStructure[ aFields[ nId ] ][ MYSQL_FS_CLIP_TYPE ]
O parâmetro lTxt também é considerado .F. na chamada da função ClipValue2Sql.

No XBrowse eu defino uma coluna concatenando dois campos, quando eu defino duas colunas separadas o erro acima citado não é gerado.

A maneira como estou definindo a coluna do xbrowse é a seguinte:
Code: Select all  Expand view  RUN

oBrw:aCols[1]:nHeadStrAlign  := AL_CENTER                       //header alinhamento do browse
oBrw:aCols[1]:nDataStrAlign  := AL_CENTER                       //data   alinhamento do browse
oBrw:aCols[1]:cHeader        := 'Código'                        //header do browse
oBrw:aCols[1]:nWidth         := 80                              //tamanho coluna
oBrw:aCols[1]:cEditPicture   := '999999'                        //mascara do campo
oBrw:aCols[1]:bEditValue     := {|| M->oGetServerQry:codpro01}  //posição do array

oBrw:aCols[2]:nHeadStrAlign  := AL_LEFT                         //header alinhamento do browse
oBrw:aCols[2]:nDataStrAlign  := AL_LEFT                         //data   alinhamento do browse
oBrw:aCols[2]:cHeader        := 'Descrição do Produto'          //header do browse
oBrw:aCols[2]:cEditPicture   := '@!'                            //mascara do campo

if PegaUsaDescricaoComplementarProdutos() == 'J'
   oBrw:aCols[2]:bEditValue     := {|| M->oGetServerQry:descpro01 + M->oGetServerQry:desccomp01 } // concatenamos a descricao complementar
   oBrw:aCols[2]:nWidth         := 600                             //tamanho coluna
else
   oBrw:aCols[2]:bEditValue     := {|| M->oGetServerQry:descpro01} //posição do array
   oBrw:aCols[2]:nWidth         := 300                             //tamanho coluna
endif

...
 


Att
Francisco Valério
 
Posts: 18
Joined: Mon Jan 13, 2014 8:37 pm

Return to FiveWin para Harbour/xHarbour

Who is online

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