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

DuroPt

Ródapé!

29 mensagens neste tópico

Boas pessoal! Estoua pensar em fazer uma informação apassar em rodapé, ou seja, vai passando da esquerda para a direita. Tive a pensar e fiz o seguinte codigo:

Public Class Form1

    Dim A As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Do Until A < 0

            A = A - 1

        Loop

        Label1.Location = New Point(A, 900)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Label1.Location = New Point(1200, 900)

    End Sub

End Class

O problema, é que a label vai do lado direito ao laod esquerdo em menos de nada, o que eu acho que impossibilita de todo a leitura do rodapé! LOOL Ensinem-me  afazer um rodape de outra maneira, ou em tao melhorar esta ideia que eu tive XD

Abraços pessoal ;D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois de:

    A = A - 1

Adiciona um atraso (delay)

  System.Threading.Thread.Sleep(200)

(o valor é em milisegundos)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao acho tnehoa certeza

Do Until A < 0

            A = A - 1

            System.Threading.Thread.Sleep(200)

        Loop

        Label1.Location = New Point(A, 900)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não:

      Do Until A < 0

            A = A - 1

            Label1.Location = New Point(A, 900)

            System.Threading.Thread.Sleep(200)

        Loop

       

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Do Until A < 0

            A = A - 1

            Label1.Location = New Point(A, 900)

            System.Threading.Thread.Sleep(200)

        Loop

continua a não dar :X

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa não testei! Aqui vai

        A = 200

        Do Until A < 0

            A = A - 1

            Label1.Location = New Point(A, 900)

            System.Threading.Thread.Sleep(10)

            Application.DoEvents()

        Loop

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ao que parece a coisa ta emmso dificil de se solucionar, é que nao me esta a dar tbm o gajo amluco sai da direita ta lgo an eskerda XD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nã é nada difícil!

Mostra lá o que tens e tenta com 300 em vez de 900.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Do Until A < 0

            A = A - 1

            Label1.Location = New Point(A, 900)

            System.Threading.Thread.Sleep(10)

            Application.DoEvents()

        Loop

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Label1.Location = New Point(1200, 900)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes do Do Until colocas A = 1200

Eu tinha colocado isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ahhaha excelente! dame um beijiiiinhuuu! XD é que tme emmso o feito de quem vai a coiso fogo és o amior quero ser como tu! LOOOL

Abraços !

Agora posso fazer outro loop, para quando A=0 ele fazer a memsa cena, ou seja, voltar a passra ainformação do rodapé?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como é que eu faxo para ele, dar aquele efeito de .."dar a volta"..vir da direita, desaparecer graudalemnte na eskerda e aparecer novamente na direita!!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

        A = 1200
        Do While A <> 0
            Do Until A < 0
                A = A - 1
                Label1.Location = New Point(A, 900)
                System.Threading.Thread.Sleep(10)
                Application.DoEvents()
            Loop
            A = 1200
        Loop
    End Sub

Fiz assim, e tá mais ou menos :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o Uncio problema é que quando o incio do texto chega a margem esquerda, desaparece todo o texto, a e aminha dieia era ir desaparecendo, tal equal como no telejornal!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o Uncio problema é que quando o incio do texto chega a margem esquerda, desaparece todo o texto, a e aminha dieia era ir desaparecendo, tal equal como no telejornal!

Por acaso ninguém sabe como fazer isto? Queria fazer um efeito parecido.

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, obrigado pela resposta, mas não é :confused: Isso é um painel que ao clicares no ícon ele desliza para o lado e mostra o seu conteúdo.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lembro-me de ter feito uma coisa dessas em VB6 com recurso a timers. Tentei fazer o mesmo em C#, e pareceu-me bastante simples. Deixo em VB.net:

Criar dois objectos:

- lblPainel: Label com o texto a circular

- tmrDeslizarPainel: Timer que irá deslizar o painel

private sub Form1_Load(object sender, EventArgs e) handles Form1.load
            ' colocar o painel no canto inferior esquerdo
            ' Aqui o clientSize é necessário para saber o tamanho da área do form, excluindo barra do programa, etc
            lblPainel.Top = this.ClientSize.Height - lblPainel.Height
            lblPainel.Left = lblPainel.Width * -1
            tmrDeslizarPainel.Start()
end sub

private sub tmrDeslizarPainel_Tick(object sender, EventArgs e) handles tmrDeslizarPainel.Tick
            if lblPainel.Left > this.Width then
                ' se o painel estiver fora dos limites colocá-lo novamente no inicio
                lblPainel.Top = this.ClientSize.Height - lblPainel.Height;
                lblPainel.Left = lblPainel.Width * -1;
            else
                lblPainel.Left += 5;
            end if
end sub

Fiz isto em C#, mas acho que em VB.net deve ser assim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' colocar o painel no canto inferior esquerdo
        ' Aqui o clientSize é necessário para saber o tamanho da área do form, excluindo barra do programa, etc
        lblPainel.Top = Me.ClientSize.Height - lblPainel.Height
        lblPainel.Left = lblPainel.Width * -1
        tmrDeslizarPainel.Start()
    End Sub

    Private Sub tmrDeslizarPainel_Tick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrDeslizarPainel.Tick
        If lblPainel.Left > Me.Width Then
            ' se o painel estiver fora dos limites colocá-lo novamente no inicio
            lblPainel.Top = Me.ClientSize.Height - lblPainel.Height
            lblPainel.Left = lblPainel.Width * -1
        Else
            lblPainel.Left += 5
        End If
    End Sub
End Class

Era mais isto, mas isto é da esquerda para a direita, ao contrário como é?

Eu estou tão estúpido que nem uma coisa TÃO SIMPLES consigo pôr a funcionar  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, bem me parecia que não estava como no telejornal :confused:

Basta colocar o texto inicialmente à direita, e ir deslizando no sentido contrário. A condição do if também tem de mudar:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' colocar o painel no canto inferior direito
        ' Aqui o clientSize é necessário para saber o tamanho da área do form, excluindo barra do programa, etc
        lblPainel.Top = Me.ClientSize.Height - lblPainel.Height
        lblPainel.Left = Me.ClientSize.Width
        tmrDeslizarPainel.Start()
    End Sub

    Private Sub tmrDeslizarPainel_Tick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrDeslizarPainel.Tick
        If lblPainel.Left  < (lblPainel.width * -1) Then
            ' se o painel estiver fora dos limites colocá-lo novamente no inicio
        lblPainel.Top = Me.ClientSize.Height - lblPainel.Height
        lblPainel.Left = Me.ClientSize.Width
        Else
            lblPainel.Left -= 5
        End If
    End Sub
End Class

Não testei, mas a lógica está explicita, peno eu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É isso mesmo, e fazer um efeito opaco? Para desvanecer quando a mensagem começa a aparecer e a desaparecer ? :confused:

E já agora, visto que isto é uma label, como inserias uma imagem por exemplo como separador?

Abraço!

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