TDolphin + XBrowse drag column
Posted: 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:
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:
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:
Att
Code: Select all
oBrw:lAllowColReGroup := .f.
oBrw:lAllowColHiding := .f.
oBrw:lAllowRowSizing := .f.
oBrw:lAllowColSwapping := .f.
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
...
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
...