TBROWSE() não se mexe!?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

TBROWSE() não se mexe!?

Mensagem por labaroazul »

Boa tarde, amigos!

Preciso da seguinte ajuda: depois de fuçar um bom tempo aqui no fórum, tomei coragem de começar a fazer um tbrowse para um sistema meu (em vez de usar o dbedit()). E o coitado não se mexe quando eu pressiono as teclas de direção. O que eu faço?

Código: Selecionar todos

SET KEY -1 TO EMPGOP

EMPREG()

FUNCTION EMPREG()
    LOCAL oTBR
    SELECT 3
    IF .NOT. ABRE("EMPREGAD.DBF", 5,"C")
        ALERT("ARQUIVO EMPREGAD.DBF INDISPONIVEL NO MOMENTO! ",{"OK"},"W+/B")
        INKEY(0)
        RETURN
    ENDIF
    SET INDEX TO EMPG0001.CDX
    DO WHILE .T.
        SET CURSOR OFF
        SET COLOR TO W+/N
        @ 24,00 CLEAR TO 24,79
        @ 24,01 SAY "<F5>INCLUIR <F6>ALTERAR <F7>CONSULTAR <F8>EXCLUIR <F9>LOCALIZAR"
        SET COLOR TO W+/B,B/W
        @ 00,00 CLEAR TO 00,79
        @ 00,((80 - LEN("EMPREGADOS")) / 2) SAY "EMPREGADOS"
        SELECT 3
        SET ORDER TO 1
        SET FILTER TO EMPRESA = cEMPRESA
        IF RECCOUNT() <> 0
            GOTO TOP
            @ 00,(79 - LEN(ALLTRIM(STR(RECCOUNT())))) SAY ALLTRIM(STR(RECCOUNT()))
        ELSE
            @ 00,79 SAY "0"
        ENDIF
        SET COLOR TO B/W,W+/B
        @ 01,00 CLEAR TO 23,79
        @ 01,00 TO 23,79
        oTBR := TBROWSEDB(02,01,22,78)
        oTBR:ADDCOLUMN(TBCOLUMNNEW("NUMERO",{||NUMERO}))
        oTBR:ADDCOLUMN(TBCOLUMNNEW("NOME",{||NOME}))
        oTBR:ADDCOLUMN(TBCOLUMNNEW("ADMISSAO",{||ADMISSAO}))
        oTBR:HEADSEP := CHR(205)
        oTBR:COLSEP := CHR(32) + CHR(179) + CHR(32)
        oTBR:COLORSPEC := "W+/B,B/W"
DO WHILE .NOT. oTBR:STABILIZE()
        ENDDO
        INKEY(0)
        DO CASE
        CASE LASTKEY() = 27
            EXIT
        CASE LASTKEY() = 13
            LOOP
        CASE LASTKEY() = 5
            oTBR:UP()
        CASE LASTKEY() = 24
            oTBR:DOWN()
        CASE LASTKEY() = 19
            oTBR:LEFT()
        CASE LASTKEY() = 4
            oTBR:RIGHT()
        CASE LASTKEY() = 1
            oTBR:HOME()
        CASE LASTKEY() = 6
            oTBR:END()
        CASE LASTKEY() = 18
            oTBR:PAGEUP()
        CASE LASTKEY() = 3
            oTBR:PAGEDOWN()
        ENDCASE
    ENDDO
RETURN(NIL)

FUNCTION EMPGOP()
RETURN(.T.)

FUNCTION ABRE(cARQUIVO, nTEMPO, cMODO)
DO WHILE nTEMPO > 0
    IF cMODO = "C"
        USE &cARQUIVO SHARED
    ELSE
        USE &cARQUIVO EXCLUSIVE
    ENDIF
    IF NETERR()
        nTEMPO = nTEMPO - 0.5
        INKEY(0.5)
    ELSE
        RETURN(.T.)
    ENDIF
ENDDO
RETURN(.F.)
E, outra coisa: sei que vocês já me explicaram isso antes, mas como faria para deixar a linha do registro toda selecionada em azul? Tentei usar a colorspec mas ela não funcionou.
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Re: TBROWSE() não se mexe!?

Mensagem por Dudu_XBase »

Código: Selecionar todos

        #include "Inkey.ch" // adicione no inicio do seu prg

        @ 01,00 CLEAR TO 23,79
        @ 01,00 TO 23,79
        oTBR := TBROWSEDB(02,01,22,78)
        oTBR:ADDCOLUMN(TBCOLUMNNEW("NUMERO",{||NUMERO}))
        oTBR:ADDCOLUMN(TBCOLUMNNEW("NOME",{||NOME}))
        oTBR:ADDCOLUMN(TBCOLUMNNEW("ADMISSAO",{||ADMISSAO}))
        oTBR:HEADSEP := CHR(205)
        oTBR:COLSEP := CHR(32) + CHR(179) + CHR(32)
        oTBR:COLORSPEC := "W+/B,B/W"

   while ( .t. )

	setcursor (0)

	while ( !oTBr:stabilize () )
	enddo

 	if ( oTBR:stable )

	    if ( oTBR:hittop ) // inicio do browse
		tone (3000,2)
	    endif

	    if ( oTBR:hitbottom )  // fim o browse
		tone (3000,2)
	    endif

	endif

        nTecla :=INKEY(0)
        DO CASE
            CASE nTecla = K_ESC
                EXIT

            case ( nTecla == K_DOWN )
		oTBR:down ()

	    case ( nTecla == K_UP )
		oTBR:up ()

	    case ( nTecla == K_LEFT )
		oTBR:left ()

	    case ( nTecla == K_RIGHT )
		oTBR:right ()

	    case ( nTecla == K_PGUP )
		oTBR:pageup ()

	    case ( nTecla == K_PGDN )
		oTBR:pagedown ()

	    case ( nTecla == K_CTRL_PGUP )
		oTBR:gotop ()

	    case ( nTecla == K_CTRL_PGDN )
		oTBR:gobottom ()
		
	    case ( nTecla == K_F5)
		//incluir()
		oTBR:refreshall ()

	    case ( nTecla == K_F6)
		//alterar()
		oTBR:refreshall ()


            Otherwise
                oTBR:refreshall ()
          EndCase
      ENDDO


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Responder