Erro em Browse!

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Erro em Browse!

Mensagem por janio »

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:

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)
Meu codigo eh esse:

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.
Anexos
rrr.jpg
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Erro em Browse!

Mensagem por janio »

O erro acontece qndo seguramos o scroll vertical! la pelas tantas o erro aparece!

Descobri que incluindo a linha CreateList( oBrowse1 , .F. ) o erro desaparece. Porém, tem um efeito colateral: ao acrescentar essa linha o browse eh preenchido com TODOS os campos do dbf.

Como usar CreateList( oBrowse1 , .F. ) e ainda exibir no browse somente os campos q quero??
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Erro em Browse!

Mensagem por janio »

Um browse feito com o designer do Basso não da erro! Significa q ha alguma coisa errada com a minha lib!

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro em Browse!

Mensagem por Toledo »

Olá Janio, veja como é o código da função CreateList():

Código: Selecionar todos

FUNCTION hwg_CreateList( oBrw, lEditable )
   LOCAL i
   LOCAL nArea := Select()
   LOCAL kolf := FCount()
   oBrw:alias   := Alias()
   oBrw:aColumns := {}
   FOR i := 1 TO kolf
      oBrw:AddColumn( { FieldName(i ),         ;
         FieldWBlock( FieldName( i ), nArea ), ;
         dbFieldInfo( DBS_TYPE, i ),         ;
         iif( dbFieldInfo( DBS_TYPE,i ) == "D" .AND. __SetCentury(), 10, dbFieldInfo( DBS_LEN,i ) ), ;
         dbFieldInfo( DBS_DEC, i ),          ;
         lEditable } )
   NEXT
   oBrw:Refresh()
   RETURN Nil
Então faça um teste mudando a forma de incluir as colunas, usando AddColumn(). Observe, que além do AddColumn(), no CreateList() é usado também os comandos:

oBrw:alias := Alias()
oBrw:aColumns := {}
oBrw:Refresh()

Então pode ser que algum deles corrige o problema.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
esbasso
Colaborador
Colaborador
Mensagens: 325
Registrado em: 24 Jan 2007 17:49
Localização: CHAPECO/SC

Erro em Browse!

Mensagem por esbasso »

O erro é sempre o mesmo na mesma linha?
Creio que não deva ser
Normalmente este problema é associado ao uso da lib grafica e de console juntos
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Erro em Browse!

Mensagem por janio »

Basso,

Meu sistema eh console com algumas telas em hwgui! Uso gtwvw/gtwvg e harbour 3.2.

O erro não eh sempre na mesma linha. Ora eh na 2342. Ora na 2345. Ora na 2250 (do hbrowse.prg)!

Ora o erro acontece assim q rolamos o scroll. ora demora mais um pouco a acontecer!

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Erro em Browse!

Mensagem por janio »

Basso e Toledo,

Tentando aqui reproduzir a criação das colunas como na função CreateList, mas ele ta reclamando da falta das variáveis.

Quais sao os valores das variaveis DBS_TYPE, DBS_LEN, DBS_DEC????

Ah, obrigado! Vou continuar fazendo uns testes aqui!

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Erro em Browse!

Mensagem por Toledo »

Janio, incluir no início do seu PRG este CH:

Código: Selecionar todos

#include "dbstruct.ch"
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Erro em Browse!

Mensagem por sygecom »

Essa Hwgui, ficou complicada, a versão atual está impraticável para uso, quem sabe da aqui uns anos, e cada um que ficou na versão antes do Russo mexer está sem correção.
Aqui usamos uma versão já totalmente modificada, com varias correções, mas esse erro que postou não recordo de ter passado por isso.

Basso,
Não pode criar uma versão no BRANCHES DO SVN DA HWGUI para ir postando sua versão ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Erro em Browse!

Mensagem por janio »

Ta complicado! Cada um tem a sua propria versao da hwgui agora.

Meu sistema misto console/gui ta acontecendo esse erro nos browses. Tinha feito uma telinha para procura de cliente que ficou show, mas dando esse erro toda hora... tive q tirar!

Nao sei o q fazer...

Janio

PS: Leonardo, vc pode mim enviar o seu hbrowse.prg pra eu compilar com minha aplicação e ver se o erro ainda acontece?
-->> janioaguiar @ ig . com . br
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Erro em Browse!

Mensagem por Itamar M. Lins Jr. »

O problema principal, é a falta de honestidade.
Porque não usa a versão 2.17 que está no SVN ? ou a 2.19 mais nova que está no SVN ?
Porque não mandar os Fix´s(correções) ? todas que me enviaram estão commitadas(gravadas) no SVN para TODOS! usarem.
Só falar, falar, falar... tem a Minigui que está muito boa, tem HBQT, FiveWin...
Porque não corrigir a 2.17 que está no SVN ? ou corrigir a 2.19 que está no SVN ?
Estão as duas versões lá é só mandar ver.
Meus conhecimentos são limitados, o pouco que posso fazer ou sei fazer eu compartilho com a comunidade, os problemas que eu encontro estão todos lá na lista de desenvolvedores. Os poucos problemas que eu corrijo todos podem usufruir.

Mas parece que existe uma concorrência(tudo para mim, nada para os outros), não sei onde, que só faz mal para todos que usam a Hwgui.
Infelizmente o nível de alguns usuários da Hwgui(olho grande) não é igual aos usuários da Minigui por exemplo.
Conseguiram brigar com a pessoa que fez a ferramenta. Está tudo lá podem mexer no código a vontade, não faz porque ?
Porque não colocar aqui os erros corrigidos por exemplo ?
É só reclamação o tempo todo.

Quanto ao seu problema, teste ele somente com a Hwgui se for possível, ou se usar(testar com versão 2.19) para ver se ocorre esse problema, eu uso a 2.19 em produção, e alguns erros que relatei na lista de desenvolvedores que não foram corrigidos ainda, eu estou consertando no meu código(gambiarra), até serem corrigidos de forma que TODOS possam usufruir.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder