Na sessão download tem uma função chamada TELA que serve para visualizar RELATÓRIOS NO VÍDEO, muito boa por sinal. Esta função, feita com o tbrowse, congela COLUNAS a esquerda.
Estou precisando congelar LINHAS. O problema é que não sei fazer essa adaptação para que se possa, além de congelar colunas, também congelar LINHAS acima do cursor.
Eis a função, se alguém puder fazer essa adaptação, já agradeço de logo.
Código: Selecionar todos
***************************************************************************
* Recebe um arquivo texto, cria um dbf, grava neste arquivo e mostra na
* tela, quando sair os arquivos temporarios criados serao apagados.
***************************************************************************
Proce lertexto
Para arquivo
#INCLUDE "INKEY.CH"
#INCLUDE "SETCURS.CH"
local1:= {}
declare acamp:=[15]
cor_ant = setcolor() // Salva cor antiga
dbf_veio= select() // Salva arquivo que estava selecionado
aadd(Local1, {"TELA01", "C", 13, 0})
aadd(Local1, {"TELA02", "C", 13, 0})
aadd(Local1, {"TELA03", "C", 13, 0})
aadd(Local1, {"TELA04", "C", 13, 0})
aadd(Local1, {"TELA05", "C", 13, 0})
aadd(Local1, {"TELA06", "C", 13, 0})
aadd(Local1, {"TELA07", "C", 13, 0})
aadd(Local1, {"TELA08", "C", 13, 0})
aadd(Local1, {"TELA09", "C", 13, 0})
aadd(Local1, {"TELA10", "C", 13, 0})
aadd(Local1, {"TELA11", "C", 13, 0})
aadd(Local1, {"TELA12", "C", 13, 0})
aadd(Local1, {"TELA13", "C", 13, 0})
aadd(Local1, {"TELA14", "C", 13, 0})
aadd(Local1, {"TELA15", "C", 13, 0})
dbcreate("tela", Local1)
sele 99 // ou comando de rede
use tela alias tela
append from &arquivo sdf //nomecompl_arq sdf
goto top
qtde_reg=lastrec()
set cursor off
@ 00,00 to 24,79 colo 'w+/b' //BOX CHR(219)
// /-------------> Cor do TBrowse
// / /---------> Cor da barra em destaque
// / / /---> Cor da barra luminosa
set color to "w+/b,n/w,,,g+/b"
oTab := TBrowseDB(02,01,24,78)
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
@ 01,01 say ' Tecle <C> para congelar as colunas que estao … esquerda do cursor ' colo 'w-/b'
lin_br=30
Do while .T.
nRow := ROW()
nCol := COL()
do while !oTab:Stabilize() ; enddo
oTAB:hilite()
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) 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
elseif nKey == K_F6
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 == K_ESC ; EXIT
elseif nkey == 99 .or. nkey==67
if otab:freeze=0
otab:freeze := otab:colpos -1
lin_br=21
else
otab:freeze = 0
lin_br= 30
otab:panhome()
otab:refreshall()
endif
endif
oTab:colorRect({1,1,lin_br,oTab:freeze},{2,5})
enddo
arq=dbf()
use
arq_dbf=alltrim(arq)+'.DBF'
erase &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.'
Janio
