Erro em Função ao Atualizar Versão

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

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

Erro em Função ao Atualizar Versão

Mensagem por janio »

Olá Pessoal, preciso da ajuda de vcs.

Tenho uma função para visualizar relatórios na tela e que ao digitar 'P' faz uma procura da PALAVRA digitada no relatório, parando em cima desta quando encontrada. Isso funcionava uma beleza na versão 99.50 do xharbour. Mas quando atualizei pra vs 99.60 a função não funciona mais.

A primeira coisa estranha que notei é que precisei colocar EXCLUSIVE na linha --->>>> use &nomefil SHARED. Na vs anterior eu utilizava SHARED e funcionava... segue a função:

Código: Selecionar todos

********************************************************
** FUNCAO PARA MOSTRAR RELATORIO NA TELA (21.06.2004) **
******************************************************** 
Proce lertexto
Para arquivo
#INCLUDE "INKEY.CH"
#INCLUDE "SETCURS.CH"
local1:= {}

procura1 := SPACE(45)
oCONTA = 0

declare acamp:=[1]

cor_ant = setcolor()    // Salva cor antiga
dbf_veio= select()      // Salva arquivo que estava selecionado
 
 aadd(Local1, {"TELA01", "C", 79, 0})
 
 contafil:=1
 nomefil:=space(8)
 SET DEFAULT TO C:\WINDOWS

   IF FILE('tela0001.dbf') 
      nomefil='tela'+strzero(contafil,4) 
      DO WHILE FILE(nomefil+'.dbf') 
         contafil+=1 
         nomefil='tela'+strzero(contafil,4)+'.dbf'
      ENDDO 
   ELSE 
      nomefil:='tela0001.dbf' 
   ENDIF

 dbcreate('&nomefil', Local1)
 sele 99  // ou comando de rede 
 use &nomefil SHARED

 append from C:\WINDOWS\&arquivo sdf   //nomecompl_arq sdf
 goto top
 qtde_reg=lastrec()
 set cursor off

 //               /-------------> Cor do TBrowse
 //              /    /---------> Cor da barra em destaque
 //             /    /      /---> Cor da barra luminosa
 set color to "w/N,n/w,,,g+/b"

oTab := TBrowseDB(00,00,23,79)
oTab:colsep := ""  // CHR(219)+" "
OTAB:HEADSEP:= 'Ä' // CHR(205)+CHR(203)+CHR(205)
OTAB:COLSEP := ''  // CHR(032)+CHR(186)+CHR(032)
OTAB:FOOTSEP:= 'Ä' // CHR(205)+CHR(202)+CHR(205)

for i = 1 to fcount()
 OTAB:ADDCOLUMN(TBCOLUMNNEW("", FIELDWBLOCK(FIELDNAME(i),SELE() )))
next

lin_br=30
Do while .T.
   nRow := ROW()
   nCol := COL()

   do while !oTab:Stabilize() ; enddo
   oTAB:hilite()
   set color to "w/N,n/w,,,g+/b"
   dispbox(3,79,23,79,'°')
   ult_pos=3+(((recno()*100)/qtde_reg)/(100/(21-1)))
   if recno()=1 ; ult_pos=3
   endif
   @ ult_pos,79 say chr(219) Color('&vCOR_MOS') //colo 'bg/b'


   setpos( nRow, nCol )
   nKey := inkey()

   IF oTAB:stable
      setpos( nRow, nCol )
      nKey := Inkey(0)
   endif
   if nKey == K_F1
   elseif nKey == K_F2
   elseif nKey == K_F3
   elseif nKey == K_F4
   elseif nKey == K_F5         ; R_Calc()
   elseif nKey == K_F6         ; CALEND()
   elseif nKey == K_F7
   elseif nKey == K_UP         ; oTab:UP()
   elseif nKey == K_DOWN       ; oTab:DOWN()
   elseif nKey == K_LEFT       ; oTab:LEFT()
   elseif nKey == K_CTRL_LEFT  ; oTab:PANLEFT()
   elseif nKey == K_RIGHT      ; oTab:RIGHT()
   elseif nKey == K_CTRL_RIGHT ; oTab:PANRIGHT()
   elseif nKey == K_PGUP       ; oTab:PAGEUP()
   elseif nKey == K_CTRL_PGUP  ; oTab:GOTOP()
   elseif nKey == K_PGDN       ; oTab:PAGEDOWN()
   elseif nKey == K_CTRL_PGDN  ; oTab:GOBOTTOM()
   elseif nKey == K_HOME       ; oTab:HOME()
   elseif nKey == K_CTRL_HOME  ; oTab:PANHOME()
   elseif nKey == K_END        ; oTab:END()
   elseif nKey == K_CTRL_END   ; oTab:PANEND()
   elseif nKey == 16           ; IMPRIME()
   elseif nKey == 80           ; PROCURA() 
   elseif nKey == K_ESC        ; EXIT
  endif
   oTab:colorRect({1,1,lin_br,oTab:freeze},{2,5})
  enddo
  arq=dbf()
  use
  arq_dbf=alltrim(arq)+'.DBF'
  erase C:\WINDOWS\&arq_dbf   // apaga o arquivo dbf que mostra na tela a impressao.
****  erase &arquivo   // apaga o arquivo prn que mostra na tela a impressao.
   sele &dbf_veio   // seleciona novamente o arquivo que estava aberto
   set color to '&cor_ant.'
   SET DEFAULT TO
RETURN 

FUNCTION PROCURA
oCONTA = oCONTA + 1

@ 24, 00 SAY "                                                                          "
@ 24, 02 SAY "Digite a palavra para Procura -> "
@ 24, 35 GET PROCURA1 PICT "@!"
READ

   IF LASTKEY() = 27
      RETURN .T.
   ENDIF

IF oCONTA = 1
   LOCATE FOR ALLTRIM(PROCURA1) $ TELA01
ELSE
   CONTINUE
ENDIF
IF EOF() 
   MSG("PALAVRA NAO ENCONTRADA")
   RETURN .F.
ELSE
   KEYBOARD CHR(13)
ENDIF

RETURN
Percebi que a função ENCONTRA A PALAVRA, mas não pára em cima dela como acontecia antes. Alguém pode me ajudar??
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

Mensagem por janio »

Amigos,

Parece ser mesmo um problema entre as versões. Testei a mesmíssima função nas duas versões e na 99.50 funcionou como antes, mas na 99.60 não funcionou naum.

Mas...

Meu amigão VAILTON me deu a solução.
Ele falou pra eu acrescentar -->> oTab:invalidate:refreshall:forcestable() na função PROCURA e...

BINGO!!! BINGO!!! BINGO!!! BINGO!!! BINGO!!! BINGO!!!

VAILTOOONNNN! :{ :)Pos

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder