Ir para o conteúdo
pmsmc

Scroll numa Caixa de RTF programaticamente

Mensagens Recomendadas

pmsmc    0
pmsmc

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 !!???

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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}")

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmsmc    0
pmsmc

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmsmc    0
pmsmc

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmsmc    0
pmsmc

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade