• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pmsmc

Scroll numa Caixa de RTF programaticamente

9 mensagens neste tópico

Pessoal,

Tenho um projecto em VB2008, na empresa em que trabalho, mas estou encravado no seguinte:

Necessito de fazer com que uma Caixa de RTF, faça o scroll do conteúdo programaticamente.

Por exemplo, quando se prime Page Up ou Page Down, a janela faz um scroll.

agora, como seria possível fazer isso mas com programação.

Ou seja, por exemplo um evento como um RichTextBox1.Sendkeys.Key {PGUP}

Haverá alguma maneira de fazer isto !!???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá e bem-vindo!

Então não há?

Uma das abordagens até é precisamente o que sugeriste... se bem que com uma ligeira alteração.

Ora exprimenta lá:

        RichTextBox1.Focus()
        SendKeys.Send("{PGDN}")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Caro Sérgio,

quase que dava, mas eu quero é ao clickar na parte superior da caixa, faça um scroll up e na parte de baixo um scroll down.

mas nao funciona :)

Se usar uma rotina externa para fazer o sendkeys, funciona, mas dentro da rotina interna, não.

Private Sub caixa_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Select Case e.X
            Case Is < caixa.Height / 2
                SendKeys.Send("{PGUP}")
            Case Is > caixa.Height / 2
                SendKeys.Send("{PGDN}")
        End Select
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E aplicando o focus na caixa, como o ribeiro sugeriu, experimentaste? Embora o controlo deveria ganhar o focus quando clicado, isso pode não estar a acontecer, ou pode apenas estar a dar o focus depois do clique.

Private Sub caixa_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        ' damos focus à caixa
        caixa.focus()
        Select Case e.X
            Case Is < caixa.Height / 2
                SendKeys.Send("{PGUP}")
            Case Is > caixa.Height / 2
                SendKeys.Send("{PGDN}")
        End Select
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nem mesmo assim.

Mas se conseguir colocar uma picturebox por cima da caixa de rtf e faze-la transparente, dou a volta á coisa.

a gaita é que mesmo com o backcolor em Tansparent fica sempre opaca

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já funciona. e não era o X mas o Y que pretendia, lol tenho de por uma pedra no meu eixo dos X  :)

Dim mouseposition, Halfbox As Integer
        mouseposition = e.Y
        Halfbox = caixa.Height / 2
        Select Case mouseposition
            Case Is < Halfbox
                'MsgBox("UP" & vbNewLine & "HALF:" & Halfbox & vbNewLine & "MOUSE:" & mouseposition)
                SendKeys.Send("{PGUP}")
            Case Is > Halfbox
                SendKeys.Send("{PGDN}")
                'MsgBox("DOWN" & vbNewLine & "HALF:" & Halfbox & vbNewLine & "MOUSE:" & mouseposition)
        End Select

Obrigado a Todos de qualquer modo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tinha de ser uma banhada assim. Focada já ela estava, por causa do MouseClick.

Já se tomam os eixos por certos, nem reparámos que estavas a controlar o eixo errado :wallbash:

Um aparte: Fecha os teus blocos de código VBNET entre as tags:

[code=vbnet][ /code] (sem o espaço antes da barra)

Desta forma, o código vai aparecer colorido, como no interpretador, e como tal muito mais fácil e agradável de ler.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ideia era dividir virtualmente uma RichTextBox em duas regiões norte e sul.

Depois, no MouseClick detecta-se se o clique foi feito na região norte ou sul.

Se o clique tivesse sido feito na região norte, forçava um scroll para cima, se o clique fosse na região sul, forçava um scroll para baixo.

É uma abordagem interessante, e melhor seria se pudessemos controlar exactamente (e de uma maneira fácil) a posição vertical da scrollbar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora