Foco do mouse no get

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

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Foco do mouse no get

Mensagem por MARCELOG »

Olá companheiros,
o sistema está "quaaaaaaaase" pronto.
Então é hora de fazer testes maciços e retirar eventuais erros gramaticais ou estéticos nas telas e bugs renitentes.
Há algum tempo, postei um tópico relativo ao foco do mouse em gets tbrowse e pushbutton.
Todavia, não objetive respostas.
Provavelmente, é porque o bug não foi solucionado.
O erro refere-se a segunda operação do mouse numa sequência de gets.
Exemplificando.

Get tbrowse
Get Pushbutton
Get Pushbutton
Get Pushbutton
Get Pushbutton
Read

Quando acesso a função/procedure pela primera vez, ao clicar com o mouse no objeto tbrowse ou opções de pushbutton, tudo funciona certinho.

Entretanto, ao executar a ação de pushbutton e o foco retornar para o botão, os demais gets, através do mouse, ficam inacessíveis.

Se após a primeira operação realizada com acionamento do terceiro botão (pushbutton) quero efetuar a segunda operação com acionamento do primeiro botão com o mouse, o foco simplesmente não transfere ou, em alguns casos, vai para o segundo botão etc.

Já tentei solucionar o problema usando GetList pública, private e local, mas não funcionou.

Então, como gosto das telas console, vocês acham melhor eu abandonar o uso do mouse ou insistir e aguardar a solução xHarbour ou através dos companheiros?

Obrigado por manifestar.


MGS
culik

Mensagem por culik »

Marcelo

Preciso de um codigo que demostre isso para estar corrigido antes da nova versao sair

[]s
Luiz
www.xharbour.com.br
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Culik, conforme pedido, segue prg que, executado, apresenta o bug noticiado no tópico.

Código: Selecionar todos

FUNCTION MAIN ()
LOCAL CTela       :=SAVESCREEN(00,00,24,79)
LOCAL aJanela     :={03,00,21,79}
LOCAL GetList     :={}
LOCAL aMatriz     :=ARRAY(100)
LOCAL nElemento
LOCAL uTbrw
LOCAL lLista
LOCAL lVolta

SET(39,159)  //ativa mouse

FOR EACH nElemento IN aMatriz
    nElemento:="TESTE TESTE TESTE TESTE TESTE TESTE TESTE"
NEXT


oList:=TBRWMATR(aJanela,aMatriz)

oTbrw:=oList

CRIATELA(22,00,24,79)

@ 03,00,21,79 GET uTbrw TBROWSE oTbrw;
  VALID {||IF(LASTKEY() == 13,READKILL(.T.),.T.)}
@ 23,01 GET lLista PUSHBUTTON CAPTION "&LISTA ";
  WHEN {||oTbrw:FORCESTABLE(),.T.};
  STATE {||Alert("lista")};
  COLOR "N/W,G+/N,G+/N,G+/N";
  STYLE "[]"
@ 23,13 GET lVolta PUSHBUTTON CAPTION "&VOLTA ";
  WHEN {||oTbrw:FORCESTABLE(),.T.};
  STATE {||Alert("volta")};
  COLOR "N/W,G+/N,G+/N,G+/N";
  STYLE "[]"

READ

RESTSCREEN(00,00,24,79,cTela)

RETURN
//---------------------------------

FUNCTION TBRWMATR(aCoor,aMatr)
*                 |     |
*JANELA___________|     |
*OBJETO_________________|

LOCAL nPointer:=1
LOCAL oTbrw
LOCAL oTbc

oTbrw:=TBROWSENEW(aCoor[1],aCoor[2],aCoor[3],aCoor[4])
oTbrw:COLORSPEC:= "W+/B,G+/N,R+/B,R/W,G+/B,G/W"
oTbrw:HEADSEP  := "ÍÍÍ"
oTbrw:COLSEP   := " ³ "
oTbrw:FOOTSEP  := "ÍÍÍ"

oTbc:=TBCOLUMNNEW("",{|x|IF(x <> NIL,aMatr[nPointer]:= x,aMatr[nPointer])})
oTbc:WIDTH:=80

oTbrw:ADDCOLUMN(oTbc)

oTbrw:GOTOPBLOCK   :={| |nPointer:=1}
oTbrw:GOBOTTOMBLOCK:={| |nPointer:=LEN(aMatr)}
oTbrw:SKIPBLOCK    :={|x|ARRAYSKIPER(x,@nPointer,LEN(aMatr))}

RETURN oTbrw
//---------------------------------

FUNCTION ARRAYSKIPER(n,nPointer,nElementos)

LOCAL nSalvo := nPointer

IF ( n > 0 )
   nPointer:= min (nPointer + n, nElementos)
ELSE
   nPointer:= max (1, nPointer + n)
ENDIF

RETURN (nPointer-nSalvo)
//---------------------------------

PROCEDURE CRIATELA(Li,Ci,Lf,Cf)

LOCAL cCor:=SETCOLOR("W+/W")

@ Li,Ci SAY 'Ú'
@ Li,Ci+1 SAY REPL('Ä',(Cf-(Ci+1)))

SETCOLOR("N/W")

@ Li,Cf SAY '¿'

FOR i=1 TO (Lf-Li)
   SETCOLOR("W+/W")
   @ Li+i,Ci SAY '³'
   @ Li+i,Ci+1 SAY REPL(' ',(Cf-(Ci+1)))
   SETCOLOR("N/W")
   @ Li+i,Cf SAY '³'
NEXT

SETCOLOR("N/W")
@ Lf,Ci SAY 'À'
@ Lf,Ci+1 SAY REPL('Ä',(Cf-(Ci+1)))
@ Lf,Cf SAY 'Ù'

SETCOLOR(cCor)

RETURN
//---------------------------------
Atenciosamente.


MGS
culik

Mensagem por culik »

Marcelo

Testei aqui o seu codigo com o ultimo cvs e funcionou sem problemas

se quiser mando o .exe

[]s
Luiz
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Caro Culik,
se puder envia o .exe eu agradeço.
Obrigado.

MGS

nrhcemgs@teleon.com.br
Responder