.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Grings
Usuário Nível 3
Usuário Nível 3
Mensagens: 340
Registrado em: 18 Ago 2004 13:51

.

Mensagem por Grings »

.
Editado pela última vez por Grings em 22 Mai 2009 21:36, em um total de 1 vez.
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

Boa Noite !!!
Vou criar uma matriz chamada aNot2 e vou alimentá-la e exibi-la no
Tbrowse ...
Vc deverá usar o include inkey.ch bastando colocar no seu prg
#include "inkey.ch"

Código: Selecionar todos

                /*Defino a Matriz */
                anot2 := {}
                           
                /*Nesse Exemplo eu estou alimentando a matriz com
                 os dados do meu banco de notas fiscais.... */
                arqnot->(dbseek(cCliente))
                while arqnot->CLIENTE==cCliente .and. !arq_not->(eof()) 
                     aadd(anot2,{arqnot->NUMNOT,arqnot->arqnot->QTDNOT})
                    arqnot->(dbskip())
                enddo

                /*Verifico se a Matriz possue conteúdo */
                if len(anot2) > 0
                     
                    /*Crio o Tbrowse */
                    oCorpo2 := tbrowsenew(03, 03, 12, 73)
                  
                    /*Para controlar a posição da array */
                    nPoint := 1

                    /*Cores e Molduras do Tbrowse */
                    oCorpo2:colorspec     := "w+/bg,n/w,n,n,w/b,r/b,r/bg"
                    oCorpo2:colsep        := chr (032) + chr (179) + chr (032)
                    oCorpo2:headsep       := chr (196) + chr (194) + chr (196)
                    oCorpo2:footsep       := chr (196) + chr (193) + chr (196)
                   
                    /* Para controlar a navegação*/  
                    oCorpo2:gotopblock    := {|| nPoint := 1 }
                    oCorpo2:gobottomblock := {|| nPoint := len (anot2)}
                    oCorpo2:skipblock     := {|n| arrayskiper (n, @nPoint, len (anot2))}


                    /* defino as colunas */
                    oCol1 := tbcolumnnew ("Nota",            {|x| iif  (x <> nil, anot2[nPoint,1] := x, anot2[nPoint,1])})
                    oCol2 := tbcolumnnew ("Qtde",        {|x| iif  (x <> nil, anot2[nPoint,2] := x, anot2[nPoint,2])})



                    /* crio browse com as colunas definidas... */
                    oCorpo2:addcolumn(oCol1)
                    oCorpo2:addcolumn(oCol2)

                    while ( .t. )

                        setcursor (0)

                        while ( !oCorpo2:stabilize () )
                        enddo

                        nTecla := inkey (0)
                        libera()

                        do case

                            case ( nTecla == K_ESC )
                                exit

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

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

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

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

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

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

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

                            case ( nTecla == K_CTRL_PGDN )
                               oCorpo2:gobottom ()

                        endcase

                    enddo
                else // Se não achar nota para esse cliente...
                    tone (3000,2)
                    ? "Não existem notas emitidas para esse cliente..."                         
                    inkeY(2)
                endif


/***********
*
* ArraySkiper ()
*
* Controla o posicionamento do browse no array.
*
*  by dudu_xbase
***********/

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 )



Editado pela última vez por Dudu_XBase em 11 Mar 2005 12:11, em um total de 1 vez.


________________________________________________________________________________________________________
(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




Grings
Usuário Nível 3
Usuário Nível 3
Mensagens: 340
Registrado em: 18 Ago 2004 13:51

.

Mensagem por Grings »

.
Editado pela última vez por Grings em 22 Mai 2009 21:37, em um total de 1 vez.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Pessoal, procure utilizar a pesquisa da seção Download do fórum, lá tem muita coisa útil para todos. :)Pos

Grings, veja esta rotina que está na seção Download:

https://pctoledo.org/forum/dload. ... file_id=65

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
evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem por evolver »

Acabei de postar na área de downloads na seção de rotinas com fontes um editor hexadecimal que fiz usando tbrowse pra editar o arquivo. Ali tu vai poder ter umas excelentes ideías sobre como usar o tbrowse de outras formas. Seja como editor de arquivos (dá pra fazer planilhas ao estilo excel com isso) seja browseando matrizes... Bem dá uma olhada tem o prg junto, bom divertimento.
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
Responder