Clipper On Line • Ver Tópico - TBrowse com Barra de Rolagem

TBrowse com Barra de Rolagem

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

TBrowse com Barra de Rolagem

Mensagempor wanderley.monteiro » 16 Abr 2010 09:37

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
Avatar de usuário

wanderley.monteiro
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 14 Ago 2008 10:42
Cidade/Estado: São Bernardo do Campo - São Paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Re: TBROWSE com Barra de Rolagem

Mensagempor alxsts » 16 Abr 2010 10:07

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor wanderley.monteiro » 16 Abr 2010 10:09

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 de usuário

wanderley.monteiro
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 14 Ago 2008 10:42
Cidade/Estado: São Bernardo do Campo - São Paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

TBROWSE com Barra de Rolagem

Mensagempor Pablo César » 16 Abr 2010 10:23

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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor wanderley.monteiro » 16 Abr 2010 10:30

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 de usuário

wanderley.monteiro
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 14 Ago 2008 10:42
Cidade/Estado: São Bernardo do Campo - São Paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

TBROWSE com Barra de Rolagem

Mensagempor Pablo César » 16 Abr 2010 10:40

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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor alxsts » 16 Abr 2010 10:43

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor wanderley.monteiro » 16 Abr 2010 10:58

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 de usuário

wanderley.monteiro
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 14 Ago 2008 10:42
Cidade/Estado: São Bernardo do Campo - São Paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Re: TBROWSE com Barra de Rolagem

Mensagempor sygecom » 16 Abr 2010 23:51

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
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor wanderley.monteiro » 17 Abr 2010 06:29

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 de usuário

wanderley.monteiro
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 14 Ago 2008 10:42
Cidade/Estado: São Bernardo do Campo - São Paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Re: TBROWSE com Barra de Rolagem

Mensagempor rochinha » 18 Abr 2010 02:51

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor alxsts » 18 Abr 2010 11:51

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.
/***
*
*  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
/***

*  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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: TBROWSE com Barra de Rolagem

Mensagempor rochinha » 18 Abr 2010 15:26

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Re: TBrowse com Barra de Rolagem

Mensagempor wanderley.monteiro » 19 Abr 2010 09:16

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
Avatar de usuário

wanderley.monteiro
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 14 Ago 2008 10:42
Cidade/Estado: São Bernardo do Campo - São Paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Re: TBrowse com Barra de Rolagem

Mensagempor alxsts » 19 Abr 2010 11:15

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Próximo



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro