TDolphin + XBrowse drag column

Post Reply
Francisco Valério
Posts: 16
Joined: Mon Jan 13, 2014 8:37 pm

TDolphin + XBrowse drag column

Post by Francisco Valério »

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

oBrw:lAllowColReGroup      := .f.
oBrw:lAllowColHiding       := .f.
oBrw:lAllowRowSizing       := .f.
oBrw:lAllowColSwapping     := .f.
 
O problema que está sendo enfrentado é que, ao clicar em um _ 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

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

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
Post Reply