Erro em Browse!
Enviado: 16 Mar 2015 18:31
Ola a todos,
Estou com um erro em browse na hwgui q talvez possa ser algo q esqueci, ja q nao tenho muito familiaridade com programação gui.
Eh bem provável q seja um bug na versao da lib q tenho (2.17). O que sei eh q hora o erro aparece, hora nao. E se dah, acredito, quando navegamos no browse apertando a setinha para cima ou para baixo (passando todos os itens).
O erro eh esse:
Meu codigo eh esse:
Estou com um erro em browse na hwgui q talvez possa ser algo q esqueci, ja q nao tenho muito familiaridade com programação gui.
Eh bem provável q seja um bug na versao da lib q tenho (2.17). O que sei eh q hora o erro aparece, hora nao. E se dah, acredito, quando navegamos no browse apertando a setinha para cima ou para baixo (passando todos os itens).
O erro eh esse:
Código: Selecionar todos
Error BASE/1132 Erro de limite: acesso de array
Called from source\hbrowse.prg->HBROWSE:LINEOUT(2314)
Called from source\hbrowse.prg->HBROWSE:PAINT(1590)
Called from source\hbrowse.prg->HBROWSE:ONEVENT(550)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from source\hdialog.prg->HDIALOG:ACTIVATE(188)
Called from s03riet.prg->_S03RIET(146)
Called from s03riet.prg->S03RIET(21)
Called from menu.prg->(b)MENU_PRIN(1163)
Called from vlibwvw.prg->DWNEXECUTE(1367)
Called from vlibwvw.prg->DOWNMENU(1119)
Called from vlibwvw.prg->BAREXECUTE(864)
Called from vlibwvw.prg->BARMENU(709)
Called from menu.prg->MENU_PRIN(1432)
Called from menu.prg->INICIO(663)
Called from menu.prg->MAIN(543)
Código: Selecionar todos
FUNCTION S03RIET( ... )
RETURN _S03RIET( HB_AParams() )
FUNCTION _S03RIET( )
Local oDlg, oLabel1, oButton1, oButton2, oButton3, oButton4
Local vPesquisa := Space(0)
Private oPesquisa, oBrowse1, oBrowse2, oGroup1, oGroup2
Private vITENS := {}
AADD(vITENS,{0,"","",0})
AbreDB( [A03PRD],[PRODUTO] )
SetToolTipBalloon(.t.)
SetColorinFocus( .t. )
SELECT Produto
DbSetOrder(7)
DbGoTop()
OrdScope( 0, "S" )
OrdScope( 1, "S" )
DbGoTop()
INIT DIALOG oDlg TITLE "Impressao de Etiquetas" ;
AT 0, 0 SIZE 538,559 CLIPPER NOEXIT ;
ON INIT {|o| o:nInitFocus := o:oPesquisa } ;
ON EXIT {|| FechaB() } ;
STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER
@ 011,002 GROUPBOX oGroup1 CAPTION "Produtos" SIZE 518,284 STYLE BS_LEFT COLOR 16711680
@ 022,021 SAY oLabel1 CAPTION "Pesquisa" SIZE 72,21
@ 103,019 GET oPesquisa VAR vPesquisa Picture "@!" SIZE 415,24 MAXLENGTH 40 ;
VALID {|| If( GetKeyState(VK_RETURN) < 0, ( EndDialog() ), ) } ;
ON CHANGE {|| PesqBrowseFilterPrd( vPesquisa, oBrowse1 ), .t. }
@ 022,047 BROWSE oBrowse1 DATABASE SIZE 496,198 ;
FONT HFont():Add( 'Arial',0,-12,700,,,) ;
STYLE WS_VSCROLL + WS_HSCROLL ;
ON UPDATE {|| oBrowse1:REFRESH() }
ADD COLUMN FieldBlock("CODIGO" ) TO oBrowse1 ;
HEADER 'Codigo';
LENGTH 5 ;
PICTURE "@E 99999";
JUSTIFY HEAD DT_CENTER ;
JUSTIFY LINE DT_RIGHT
ADD COLUMN FieldBlock("DESCRI" ) TO oBrowse1 ;
HEADER 'Descrição' ;
LENGTH 38 ;
PICTURE "@!" ;
JUSTIFY HEAD DT_CENTER ;
JUSTIFY LINE DT_LEFT
ADD COLUMN FieldBlock("UNIPRD" ) TO oBrowse1 ;
HEADER 'Un' ;
LENGTH 02 ;
PICTURE "@!" ;
JUSTIFY HEAD DT_CENTER ;
JUSTIFY LINE DT_LEFT
ADD COLUMN FieldBlock("PRCMER" ) TO oBrowse1 ;
HEADER 'Preço';
LENGTH 10 ;
PICTURE "@E 999,999.99";
JUSTIFY HEAD DT_CENTER ;
JUSTIFY LINE DT_RIGHT
@ 024,249 BUTTONEX oButtonex1 CAPTION "Adicionar" SIZE 98,32 ;
STYLE BS_CENTER + WS_TABSTOP ;
ON CLICK {|| ADD_LISTA() } ;
TOOLTIP 'Clique aqui para adicionar o Produto para impressao'
**
@ 013,292 GROUPBOX oGroup2 CAPTION "Produtos que serao Impressos" SIZE 518,224 ;
STYLE BS_LEFT COLOR 16711680
@ 024,313 BROWSE oBrowse2 ARRAY SIZE 491,158 ;
STYLE WS_VSCROLL + WS_HSCROLL ;
FONT HFont():Add( 'Arial',0,-12,700,,,) ;
* oBrowse2:lDisableVScrollPos := .t.
oBrowse2:aArray := vITENS
CreateArList( oBrowse2, vITENS )
oBrowse2:aColumns[1]:heading := "Codigo"
oBrowse2:aColumns[2]:heading := "Produto"
oBrowse2:aColumns[3]:heading := "Un"
oBrowse2:aColumns[4]:heading := "Preço"
oBrowse2:aColumns[1]:length := 5
oBrowse2:aColumns[2]:length := 38
oBrowse2:aColumns[3]:length := 2
oBrowse2:aColumns[4]:length := 10
oBrowse2:aColumns[1]:Picture := "@E 99999"
oBrowse2:aColumns[2]:Picture := "@!"
oBrowse2:aColumns[3]:Picture := "@!"
oBrowse2:aColumns[4]:Picture := "@E 999,999.99"
@ 024,478 BUTTONEX oButtonex2 CAPTION "Excluir" SIZE 98,32 ;
STYLE BS_CENTER + WS_TABSTOP ;
ON CLICK {|| ADD_EXCLUIR(oBrowse2:nCurrent) } ;
TOOLTIP 'Clique aqui para Excluir um Produto'
**
@ 339,524 BUTTONEX oButton3 CAPTION "&Imprimir" SIZE 90,30 ;
BITMAP (HBitmap():AddResource('print')):handle ;
ON CLICK {|| ImprimeEtq(vITENS) } ;
STYLE BS_CENTER +WS_TABSTOP
@ 441,524 BUTTONEX oButton4 CAPTION "&Fechar" SIZE 90,30 ;
BITMAP (HBitmap():AddResource('door')):handle ;
ON CLICK {|| SairEtiqueta() } ;
STYLE BS_CENTER +WS_TABSTOP
ACTIVATE DIALOG oDlg
RETURN oDlg:lresult
***************************************************
Static Function PesqBrowseFilterPrd( var, browseee)
***************************************************
Local nreg :=recno()
DbSeek( "S" + var , .T. )
if nreg != recno()
Browseee:Refresh(.f.)
endif
Return .t.
******************************
static function SairEtiqueta()
If MsgYesNo("DESEJA FECHA IMPRESSAO DE ETIQUETAS?", "CriaSoftWare")
EndDialog()
Endif
return .t.
static function FechaB()
DbCloseArea("Produto")
ReadInsert(.F.)
return .t.
*************************
Static Function ADD_LISTA
*************************
If produto->PRCMER = 0
Msg("PRODUTO COM PREÇO ZERADO!")
Return .f.
Endif
If vITENS[1,1] = 0
ADel( vITENS, 1 )
ASize( vITENS, 0 )
Endif
If AScan( vITENS, {|x| x[1] = produto->CODIGO } ) = 0
AADD( vITENS, { produto->CODIGO, produto->DESCRI, produto->UNIPRD, produto->PRCMER } )
Else
Aviso("Esse Produto já foi adicionado")
Return .f.
Endif
oBrowse2:Top()
oBrowse2:Bottom()
oBrowse2:Refresh(.T.)
oPesquisa:SetFocus()
SetFocus(oPesquisa)
Return .t.
*********************************
Static Function ADD_EXCLUIR(vADD)
*********************************
Local Nr := Len(vITENS)
If vADD > 0
ADel( vITENS, vADD )
ASize( vITENS, --Nr )
If Len(vItens) = 0
AADD(vITENS,{0,"","",0})
Endif
Endif
oBrowse2:Top()
oBrowse2:Bottom()
oBrowse2:Refresh(.T.)
oPesquisa:SetFocus()
SetFocus(oPesquisa)
Return .t.