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

 

Re: TBrowse com Barra de Rolagem

Mensagempor Pablo César » 19 Abr 2010 13:31

alxsts escreveu:Olá!
Pablo César escreveu: O proprio TBROWSE ja faz isso,

Desculpe Pablo. Eu nunca vi...
Não me expressei corretamente. Quis eu dizer que a "rolagem" de tela ou deslocamento de tela, o proprio TBROWSE já faz. Explico-me:

Quando você o seu TBROWSE tem muitas colunas, o usuário utiliza a tecla da direita e esquerda para navegar entre colunas. E quando no seu TBROWSE precisa exibir todas as linhas (que normalmente seriam os registros), o usuário utiliza as teclas de acima e abaixo para navegar entre elas. Por isso achei desnecessário. Mas depois eu conseguí compilar e ví que seria apenas para situar (mostrar localização) de onde o ponteiro (ou prompt de navegação) está na exibição toda.

Agora com respeito ao Setswmouse() for da VL2_52 ou da SuperLib, realmente não sei, pois nunca precisei utilizar.
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 » 19 Abr 2010 14:09

Gente obrigado pela força, consegui inserir a barra. A ordenação de colunas por mouse, não vou comprara essa briga não, o cliente contnuara apertando F2 rsrsrsrs

Valeu a força!
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 17:15

Olá!

[Pablo]
Lendo o teu texto, tive a impressão de que você dizia que o TBrowse colocava barras de rolagem.
[Wanderlei]
Dá pra mostrar como você fez? Usou a Superlib?
[]´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

TBrowse com Barra de Rolagem

Mensagempor Pablo César » 19 Abr 2010 18:14

[Pablo]
Lendo o teu texto, tive a impressão de que você dizia que o TBrowse colocava barras de rolagem.
Ahammm por isso que eu disse que eu não tinha me expressado direito, mas não foi isso que eu quise dizer.

Aqui está o código exemplo ja compilado em anexo (mas sem o evento do mouse).
Anexos
demobrow.zip
(158.91 KiB) Baixado 388 vezes
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

TBrowse com Barra de Rolagem

Mensagempor Poka » 05 Ago 2018 13:09

Boa tarde

Hazael

experimenta assim

priva nRow:= browsepesq:nAt
   xcodigo:=adados[nrow,1]
   xnome:=adados[nrow,2]

depende dos campos do seu browse





Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 509
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

TBrowse com Barra de Rolagem

Mensagempor Toledo » 05 Ago 2018 16:45

Hazael, no seu código, a variável nArryRowNo já controla a posição do ponteiro dentro do Array, faltou apenas incluir neste controle se for pressionado o CTRL+HOME e CTRL+END para posicionar no primeiro ou último elemento da array, então depois do comando oBrowse:SkipBlock := { | nSkip | TbrASkipper( nSkip, @nArryRowNo ) }, incluir:

oBrowse:GoTopBlock    := {|| nArryRowNo := 1 }
oBrowse:GoBottomBlock := {|| nArryRowNo := nAgenSize }


Então nArryRowNo vai ter a posição dentro da array. Para pegar o primeiro campo do elemento atual da Array (aAgenda) use aAgenda[nArryRowNo,1] .

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

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

TBrowse com Barra de Rolagem

Mensagempor Poka » 06 Ago 2018 09:16

Olá

Hazael disse
nAt não existe no tbrowse... de onde vem?


eu uso a minigui extend , deve ser por isso.
Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 509
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

TBrowse com Barra de Rolagem

Mensagempor microvolution » 12 Ago 2018 08:52

hazael escreveu:Video: https://youtu.be/jbXJMgySKa0
além do vídeo ser explicativo, quero um dia implementar usando a HMG ou WVG, pois o meu TBROWSE console ainda não funciona nada de mouse.

Parabéns!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

TBrowse com Barra de Rolagem

Mensagempor JoséQuintas » 12 Ago 2018 18:43

Eu cheguei a colocar, mas não mostrando exatamente a posição.
Seria o desenho da barra de rolagem, e o usuário poder clicar nessa barra.
Agora tá comentado, nem uso mais.

   aHotKeys := {}
   //    { nTop + 1, nRight, nTop + 1, nRight, "", K_CTRL_PGUP }, ;
   //    { nTop + 2, nRight, nTop + 2, nRight, "", K_CTRL_PGUP }, ;
   //    { nTop + 3, nRight, nTop + 3, nRight, Chr(30), K_UP }, ;
   //    { nTop + 4, nRight, nTop + 4, nRight, Chr(30), K_UP }, ;
   //    { nBottom - 2, nRight, nBottom - 2, nRight, Chr(31), K_DOWN }, ;
   //    { nBottom - 1, nRight, nBottom - 1, nRight, Chr(31), K_DOWN }, ;
   //    { nBottom, nRight, nBottom, nRight, "", K_CTRL_PGDN }, ;
   //    { nBottom, nLeft + 1, nBottom, nLeft + 2, Chr(17) + Chr(17), K_LEFT }, ;
   //    { nBottom, nRight - 2, nBottom, nRight - 1, Chr(16) + Chr(16), K_RIGHT }, ;
   //    ;// Nesta ordem, se tiver area livre, PgUp e PgDn funciona
   //    { nTop + 5, nRight, nTop + 5, nRight, "", K_PGUP }, ;
   //    { nTop + 6, nRight, nTop + 6, nRight, "", K_PGUP }, ;
   //    { nBottom - 4,nRight, nBottom - 4, nRight, "", K_PGDN }, ;
   //    { nBottom - 3,nRight, nBottom - 3, nRight, "", K_PGDN }, ;
   //    { nBottom, nLeft + 3, nBottom, nLeft + 12, "[Localiza]", K_ALT_L}, ;
   //    { nBottom, nLeft + 13, nBottom, nLeft + 20, "[Filtro]", K_ALT_F}, ;
   //    { nBottom, nLeft + 21, nBottom, nLeft + 27, "[Ordem]", K_F5 } }
   // FOR EACH oElement IN aHotKeys
   //    @ oElement[ 1 ], oElement[ 2 ] SAY oElement[ 5 ]
   // NEXT


Basicamente é a área do clique, e qual será a tecla acionada, como se fossem buttons de tamanhos variados.
No TBrowse, ao clicar com o mouse, verifica se MRow(), MCol() se encaixam em alguma dessas regiões, e substitui pela tecla que seria equivalente.

      CASE nKey == K_LBUTTONDOWN
         FOR EACH oElement IN aHotKeys
            IF nMRow >= oElement[ 1 ] .AND. nMRow <= oElement[ 3 ] .AND. nMCol >= oElement[ 2 ] .AND. nMCol <= oElement[ 4 ]
               nKey := oElement[ 6 ]
               EXIT
            ENDIF
         NEXT


Pra mostrar a barra de rolagem com a posição exata, teria que saber o total de registros, e isso poderia ser demorado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBrowse com Barra de Rolagem

Mensagempor JoséQuintas » 13 Ago 2018 12:17

hazael escreveu:Mas o que não consegui fazer é clicar e arrastar o ponteiro indicador


O Tbrowse foi projetado para uma única tecla.
Isso de arrastar, até daria pra fazer, talvez um loop entre o MouseDown e MouseUp, e dependeria de saber a quantidade total.
Acho de um modo geral, o Scroll já ajuda.
Talvez só o lateral, que basta analisar o próprio array do tbrowse.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBrowse com Barra de Rolagem

Mensagempor JoséQuintas » 13 Ago 2018 13:55

É praticamente isso que postei.
Transformar a região da barra de rolagem em posição de clique.
E no Inkey() verificar qual a posição que clicaram.

Se embaixo, no desenho horizontal, lado direito ou esquerdo, troca pelas setas.
Se no lateral, se for na parte de cima troca por PGUp
Se for na parte de baixo PgDn
Se for na parte que parece seta, Up ou Down

As posições tem a ver diretamente com o desenho, de onde estão as barras, e as setas das barras.
A única coisa é criar o array com as posições, e a tecla que entra se o usuário clicar lá.

José M. C. Quintas
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBrowse com Barra de Rolagem

Mensagempor Linguagemclipper » 25 Ago 2020 12:33

Pessoal eu não entendí como o programa determina a variável nTotal.
Quero implementar a barra de rolagem num TBROWSE com banco de dados. O problema é determinar o total de registros que é mostrado no TBROWSE, não posso simplesmente usar o LASTREC() porque tem registros marcados para deleção; tem registros filtrados etc. Então, não sei como descobrir quantas linhas tem meu objeto TBROWSE quando uso um DBF.
Esses exemplos de programas aí eu não entendí como funcionam. Se alguém conseguiu implementar, seria legal também constar um exemplo usando tais funções.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar de usuário

Linguagemclipper
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 214
Data de registro: 16 Abr 2016 17:33
Cidade/Estado: Maceió/AL
Curtiu: 38 vezes
Mens.Curtidas: 12 vezes

TBrowse com Barra de Rolagem

Mensagempor JoséQuintas » 25 Ago 2020 13:19

Determinar a quantidade de registros ou posição, sem ficar demorado, é a parte mais difícil.
O resto é moleza.

Só a parte do gráfico:
Digamos que as linhas vão de 1 a 10
E a posição atual? talvez uma fórmula, supondo que fosse RecNo() sem índice...

nPos := Round( RecNo() / LastRec() * 10, 0 )
FOR nLin = 1 TO 10
   @ nLin, nCol SAY iif( nPos == nLin, "X", "." )
NEXT


Pronto, tá feito um gráfico.
E uma navegação? Testando a posição do clique do mouse

IF Inkey() == K_BUTTONDOWN
   IF MCol() == 50 // supondo que o gráfico está na coluna 50
      IF MRow() >= 0 .AND. MRow() <= 11 // testa se o clique foi nas linhas do gráfico
         nNewPos := MRow()
        IF nNewPos < nPosAtual // se clicou antes da posição atual, PageUp
           KEYBOARD Chr( K_PGUP )
        ELSEIF nNewPos > nPosAtual // se clicou depois da posição atual, PageDown
           KEYBOARD Chr( K_PGDN )
      ENDIF
   ENDIF
ENDIF


Apenas um exemplo básico, não é um bicho de sete cabeças mas... o problema é obter quantidade de registros sem deixar lento.
Acabei nunca colocando gráfico por conta disso.

"Talvez" fazer igual outras linguagens fazem: deixa tudo num array, que teste encima do array é mais simples/rápido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

TBrowse com Barra de Rolagem

Mensagempor Linguagemclipper » 25 Ago 2020 13:27

Obrigado pela dica, mas acabei encontrando agora aqui uma função que resolveu tudo: OrdKeyCount()
Fiz só colocar assim que deu tudo certo:
nTOTAL := OrdKeyCount() 

O resto continua a mesma coisa.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar de usuário

Linguagemclipper
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 214
Data de registro: 16 Abr 2016 17:33
Cidade/Estado: Maceió/AL
Curtiu: 38 vezes
Mens.Curtidas: 12 vezes

Anterior



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 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