TBrowse com Barra de Rolagem

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

TBrowse com Barra de Rolagem

Mensagem por wanderley.monteiro »

Bom dia a Todos

Alguem tem algum exemplo de como inserir barra de rolagem em um TBrowse?

Abs

WMonteiro
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: TBROWSE com Barra de Rolagem

Mensagem por alxsts »

Olá!

Entre algumas opções, existe a SuperLib, que você poderá baixar daqui.. Tem várias funções, incluido TBrowse com barras de rolagem. Vem com o respectivo NG e os fontes.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

Re: TBROWSE com Barra de Rolagem

Mensagem por wanderley.monteiro »

Obrigado Alexandre!!! Isso é uma pérola!
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

TBROWSE com Barra de Rolagem

Mensagem por Pablo César »

TBROWSE com barra de rolagem ? Nunca precisei disso. O proprio TBROWSE ja faz isso, no entanto seria interessante ver como funciona. Baixei o arquivo, mas não consegui compilar pois precisa da VL e eu só tenho a VL2_52 que não possui a função ( Setswmouse() ). Mesmo desabilitando-la o exemplo não consegue criar os arquivos dbfs. Em outra palavras desistí por falta de tempo. Mas se algué possuir algum exemplo compilado e quiser mostrar anexando-lo em forma de ZIP aqui no forum, eu agradeço para eu ver e matar a curiosidade.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

Re: TBROWSE com Barra de Rolagem

Mensagem por wanderley.monteiro »

neste fim de semana vou me divertir com isso, quem sabe rola... Abs!
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

TBROWSE com Barra de Rolagem

Mensagem por Pablo César »

Ahh ja conseguí testar, pena que os eventos do mouse não conseguí reproduzir (mas isso não é o que mais importa). Agora entendí a finalidade... essa função seria para apenas MOSTRAR ao usuário a posição de edição dentro da área toda do TBROWSE. Achei de uso vanal, porque pensei que as barras de rolagem iriam interferir na exibição de forma estática durante a navegação. Mas se é isso que você quer... boa sorte então !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: TBROWSE com Barra de Rolagem

Mensagem por alxsts »

Olá!
Pablo César escreveu: O proprio TBROWSE ja faz isso,
Desculpe Pablo. Eu nunca vi... Não sei qual arquivo você baixou mas, a SuperLib nada tem a ver com a VL Lib.
A Superlib tem uma função que aguarda por um evento de teclado ou mouse e devolve o código do evento. Dependendo deste código, o programador atualiza as barras de rolagem.

A SuperLib já foi migrada para [x]Harbour.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

Re: TBROWSE com Barra de Rolagem

Mensagem por wanderley.monteiro »

Ah tah, pensei que existisse alguma propriedade do TBrowse que ativada exibia essa barra vertical de scrool.
Eh verdade se não me engano na VL tem algo parecido, o problem que rodo o sistem aem Win7 e os caracteres da VL não ficam bons aqui...

Mas tem muitas funçoes interessantissimasnesse pacotasso...

Abs

WMonteiro
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: TBROWSE com Barra de Rolagem

Mensagem por sygecom »

Olá Wanderley,
Esse problema de caracter eu resolvi compilando um pequeno aplicativo com clipper+rtlink e descompilando esse meu proprio aplicativo depois peguei as funções da VL e mudei para o meu gosto para mudar esses caracter que ficavam estranho, ai rodou legal tanto janela como tela cheia, e se compilar com xHarbour ai da pra melhorar mais ainda o visual da VL no 4shared tem uns exemplos bom:
http://www.4shared.com/dir/9103314/4c5c ... aring.html
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

Re: TBROWSE com Barra de Rolagem

Mensagem por wanderley.monteiro »

Vou dar uma brincada! Obrigado Leonardo!
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: TBROWSE com Barra de Rolagem

Mensagem por rochinha »

Amiguinho,

Colocar uma barra de rolagem em suporte ao TBrowse é muito fácil.

Voce precisará dos caracteres 176 e 178, onde:

O Caracter 176 sera a barra de scroll por onde o cursor, caracter 178, navegará.

Suponde que o seu Browse tenha 78 colunas(tirando as duas da linha de contorno) e 21(tirando duas linhas de contorno e a ultima para mensagem) voce poderá posicionar sua barra na coluna 80 e linha 2.

Com um FOR voce repete os caracteres 176 de 2,80 até 20,80, pensando nisto sua barra de rolagem tera ao menos 18 colunas, este numero será o STEP/SALTO para o movimento do cursor.

Então supondo que o ponteiro do DBF esteja no inicio e voce tenha 180 registros na mesma, o cursor não se movimentará para outra posição até que o cursor do DBF esta entre os registros 11 e 20.

Ou seja, voce tem 180 registros, sua barra tem 18 posições, 180/18 = 10.

O seu cursor só poderá mudar de posição de 10 em 10 registros. Então 10 é o ponto para salto.

Para saber o ponto para salto em outras quantidades de registros voce calcula RECCO()/18=ponto de salto.

Então a partir do ponto de salto voce dá um @...SAY do caracter 176 na posição do cursor e @...SAY do caracter 178 na nova posição.

Se TBrowse fará a verificação da posição a cada SKIP ou vez que voce desce ou sobe o cursor.

De uma pesquisada e analise a função de barra de progressão para indexação que pode estar perdida pelo site e voce terá uma base do que estou falando.

Faça uma pesquisa afinada no forum por barra|rolagem e veja se encontra outras duvidas e quais soluções foram apresentadas.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: TBROWSE com Barra de Rolagem

Mensagem por alxsts »

Olá!

Pode-se adaptar o fonte exibido abaixo, que veio com os exemplos do Clipper 5.

Seria interessante adaptar para que quando o usuário arrastasse o cursor da barra de rolagem com o mouse, o arquivo fosse movimentado proporcionalmente à nova posição desse cursor.

C:\Clipper5\Source\Sample\ScrolBar.Prg.

Código: Selecionar todos

/***
*
*  Scrolbar.prg
*
*  Implements a scroll bar that can be updated as the cursor moves down
*  in a TBrowse object, ACHOICE(), DBEDIT(), or MEMOEDIT()
*
*  Copyright (c) 1993, Computer Associates International Inc.
*  All rights reserved.
*
*  NOTE: Compile with /n /w
*
*/

#include "Fileman.ch"


/***
*
*  ScrollBarNew( <nTopRow>, <nTopColumn>, <nBottomRow>, 
*                <cColorString>, <nInitPosition> ) --> aScrollBar
*  
*  Create a new scroll bar array with the specified coordinates
*
*/
FUNCTION ScrollBarNew( nTopRow, nTopColumn, nBottomRow, ;
                        cColorString, nInitPosition )

   LOCAL aScrollBar := ARRAY( TB_ELEMENTS )

   aScrollBar[ TB_ROWTOP ]    := nTopRow
   aScrollBar[ TB_COLTOP ]    := nTopColumn
   aScrollBar[ TB_ROWBOTTOM ] := nBottomRow
   aScrollBar[ TB_COLBOTTOM ] := nTopColumn

   // Set the default color to White on Black if none specified
   IF cColorString == NIL
      cColorString := "W/N"
   ENDIF
   aScrollBar[ TB_COLOR ] := cColorString

   // Set the starting position
   IF nInitPosition == NIL
      nInitPosition := 1
   ENDIF
   aScrollBar[ TB_POSITION ] := nInitPosition

   RETURN ( aScrollBar )



/***
*
*  ScrollBarDisplay( <aScrollBar> ) --> aScrollBar
*
*  Display a scoll bar array to the screen
*
*/
FUNCTION ScrollBarDisplay( aScrollBar )
   
   LOCAL cOldColor
   LOCAL nRow

   cOldColor := SETCOLOR( aScrollBar[ TB_COLOR ] )

   // Draw the arrows
   @ aScrollBar[ TB_ROWTOP ], aScrollBar[ TB_COLTOP ] SAY TB_UPARROW
   @ aScrollBar[ TB_ROWBOTTOM ], aScrollBar[ TB_COLBOTTOM ] SAY TB_DNARROW

   // Draw the background
   FOR nRow := (aScrollBar[ TB_ROWTOP ] + 1) TO (aScrollBar[ TB_ROWBOTTOM ] - 1)
      @ nRow, aScrollBar[ TB_COLTOP ] SAY TB_BACKGROUND
   NEXT

   SETCOLOR( cOldColor )

   RETURN ( aScrollBar )



/***
*
*  ScrollBarUpdate( <aScrollBar>, <nCurrent>, <nTotal>,
*     <lForceUpdate> ) --> aScrollBar
*
*  Update scroll bar array with new tab position and redisplay tab
*
*/
FUNCTION ScrollBarUpdate( aScrollBar, nCurrent, nTotal, lForceUpdate )

   LOCAL cOldColor
   LOCAL nNewPosition
   LOCAL nScrollHeight := ( aScrollBar[TB_ROWBOTTOM] - 1 ) - ;
                          ( aScrollBar[TB_ROWTOP] )

   IF nTotal < 1
      nTotal := 1
   ENDIF

   IF nCurrent < 1
      nCurrent := 1
   ENDIF

   IF nCurrent > nTotal
      nCurrent := nTotal
   ENDIF

   IF lForceUpdate == NIL
      lForceUpdate := .F.
   ENDIF

   cOldColor := SETCOLOR( aScrollBar[ TB_COLOR ] )

   // Determine the new position
   nNewPosition := ROUND( (nCurrent / nTotal) * nScrollHeight, 0 )

   // Resolve algorythm oversights
   nNewPosition := IF( nNewPosition < 1, 1, nNewPosition )
   nNewPosition := IF( nCurrent == 1, 1, nNewPosition )
   nNewPosition := IF( nCurrent >= nTotal, nScrollHeight, nNewPosition )

   // Overwrite the old position (if different), then draw in the new one
   IF nNewPosition <> aScrollBar[ TB_POSITION ] .OR. lForceUpdate
      @ (aScrollBar[ TB_POSITION ] + aScrollBar[ TB_ROWTOP ]), ;
         aScrollBar[ TB_COLTOP ] SAY TB_BACKGROUND
      @ (nNewPosition + aScrollBar[ TB_ROWTOP ]), aScrollBar[ TB_COLTOP ] SAY ;
        TB_HIGHLIGHT
      aScrollBar[ TB_POSITION ] := nNewPosition
   ENDIF

   SETCOLOR( cOldColor )

   RETURN ( aScrollBar )
C:\Clipper5\Include\FileMan.Ch

Código: Selecionar todos

/***
*  
*  Fileman.ch
*
*  Include file for Fileman.prg
*
*  Copyright (c) 1993, Computer Associates International.
*  All rights reserved.
*
*/

// The elements in aFileMan
#define  FM_ROWTOP         1
#define  FM_COLTOP         2
#define  FM_ROWBOTTOM      3
#define  FM_COLBOTTOM      4
#define  FM_COLOR          5
#define  FM_PATH           6
#define  FM_RETURNFILE     7
#define  FM_OLDCOLOR       8
#define  FM_OLDSCREEN      9
#define  FM_OLDSELECT      10

#define  FM_ELEMENTS       10

// The elements in aTab
#define  TB_ROWTOP         1
#define  TB_COLTOP         2
#define  TB_ROWBOTTOM      3
#define  TB_COLBOTTOM      4
#define  TB_COLOR          5
#define  TB_POSITION       6

#define  TB_ELEMENTS       6

// The main menu items
#define  MN_LOOK           1
#define  MN_COPY           2
#define  MN_RENAME         3
#define  MN_DELETE         4
#define  MN_PRINT          5
#define  MN_OPEN           6

// The Up and Down arrows, highlight and background char's for the thumb tab
#define  TB_UPARROW        CHR(  24 )
#define  TB_DNARROW        CHR(  25 )
#define  TB_HIGHLIGHT      CHR( 178 )
#define  TB_BACKGROUND     CHR( 176 )

// The checkmark for the tagged files
#define  FM_CHECK          CHR( 251 )

// Other definitions
#define  FM_SINGLEFRAME    "ÚÄ¿³ÙÄÀ³"
#define  FM_SINGLEBORDER   "ôÂÁ"
#define  FM_DOUBLEFRAME    "ÉÍ»º¼ÍȺ"
#define  FM_DOUBLEBORDER   "̹ËÊ"
#define  FM_LEFT           1
#define  FM_RIGHT          2
#define  FM_TOP            3
#define  FM_BOTTOM         4
#define  FM_HORIZONTAL     2
#define  FM_VERTICAL       4
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: TBROWSE com Barra de Rolagem

Mensagem por rochinha »

Amiguinhos,

Ta ai a prova.

A rotina colocada pelo nobre colega alxsts bateu direitinho com o que falei, com a diferença de concretizar a didática.

Pena que a memória do véio aqui não chegou a lembrar que ainda tinha os sample sources do seu velho Clipper ou que pudesse recorrer ao seu velho livro carcomido pelos ratos e sem capa do mais velho Tom Retting com maravilhas como estas.

Então mãos à obra.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

Re: TBrowse com Barra de Rolagem

Mensagem por wanderley.monteiro »

Valeeeeuu!!! Funcinou legal!

Outra pergunta, o TBrowse possui alguma propriedade que organiza a lista por determinada coluna ou tenho obrigatoriamente que manter um indice de cada uma delas e usar o DBSETORDER para alternar? Atualmente trabalho assim quando é TBrowse de DBF, agora com Array ja resolvi esse caso com o ASORT.

Abs

WMonteiro
Americana SP
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: TBrowse com Barra de Rolagem

Mensagem por alxsts »

Olá!

Não meu amigo... É como no caso dos arrays que você mencionou. Tem que fazer "no braço".
Se estiver usando a SuperLib, poderá definir como hot areas as colunas do browser que tem índice aberto. Quando o usuário clicar nestas colunas, muda-se a ordem ativa no arquivo e faz-se um refreshAll() no browser.

PS:
Rochinha:
grato pela gentileza. Uma demostração clara de que urbanidade, educação, humildade e boa vontade cabem em qualquer lugar. E não custam nada!
[]´s
Alexandre Santos (AlxSts)
Responder