Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

rycardo_

Hora no Vb

Mensagens Recomendadas

rycardo_

Boa Noite,

Eu gostava de saber como adiciono a hora actual numa tool strip status numa form, mas não faço a minima ideia de como o fazer...

Alguma sugestão?

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Podes adicionar uma label à statusbar, e com um timer ir actualizando a hora. Não deve apresentar dificuldades.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rycardo_

System.DateTime.now

o problema é que eu não sei aplicar....

sou muito noob

fica ToolStripStatusLabel1 = System.DateTime.Now?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Eu fiz assim

ToolStripStatusLabel1.Text = today()

Mas tens que colocar um timer no form e depois usares o evento tick

Tens que por o timer com intervale igual a 1000

Coloca o enable em true

Assim vai funcionar


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Se quiseres só o relógio:

ToolStripStatusLabel1.Text = Now.ToShortTimeString

Se quiseres tudo, mesmo à chefe:

ToolStripStatusLabel1.Text = Now.ToString

Qualquer formato é possível.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rycardo_

Eu fiz assim

ToolStripStatusLabel1.Text = today()

Eu consegui com "ToolStripStatusLabel1.Text = System.DateTime.Now", mas nao mexe os segundos, como eu faço para os segundos "andarem" também?

Pensei em usar um timer, mas também não sei de que forma o usar

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55
    Private WithEvents Relogio As New Timer With {.Interval = 900, .Enabled = True}

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

    Private Sub MostraRelogio() Handles Relogio.Tick
        ToolStripStatusLabel1.Text = Now.ToShortTimeString & ":" & Now.Second.ToString.PadLeft(2, Char.Parse("0"))
    End Sub


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Lê o update que eu fiz a minha mensagem anterior

Tens que colocar o timer, propriedades enable a true e intervale a 1000

Colocas o código dentro do evento tick

E vai funcionar

Today() só da a data, tens razão


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rycardo_

    Private WithEvents Relogio As New Timer With {.Interval = 900, .Enabled = True}

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MostraRelogio()
    End Sub
    Private Sub MostraRelogio() Handles Relogio.Tick
        ToolStripStatusLabel1.Text = Now.ToShortTimeString & ":" & Now.Second.ToString.PadLeft(2, Char.Parse("0"))
    End Sub

se eu usar

"ToolStripStatusLabel1.Text = Now.ToString & ":" & Now.Second.ToString.PadLeft(2, Char.Parse("0"))"

aparece duas vezes os segundo do genero hora:minutos:segundos:segundos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Então mete só ToolStripStatusLabel1.Text = Now.ToShortTimeString.

É porque o teu locale ou SO estão orientados para esse formato.

Aqui (WXPSP3-PT) aparece só HH:MM, por isso acrescentei os segundos.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

@ribeiro55 ,

Porque Interval = 900 e não Interval = 1000 ? É que assim nunca vai andar certo (se bem que tem pouca importância, mas é um preciosismo)

@rycardo_ ,

Coloca desta forma:

ToolStripStatusLabel1.Text = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

@jpaulino

Foi uma mania que apanhei.

O Interval não é certinho (ou pelo menos não era) e em certos casos com refrescamento de um segundo, podem saltar segundos, se o limite for muito à justa, como é o caso de 1000msecs.

Se os 1000msecs se traduzirem em 1001, o segundo anterior salta para o próximo, ignorando o do meio.

Já me aconteceu ver isso :)

Com os 900msecs garanto que a actualização é feita correctamente.

Mas lá está... pode ter sido uma burrice da altura e não ter actualizado por uma razão ou outra, e eu fiquei com a mania.

@rycardo_

jpaulino a rematar novamente a solução ideal ;)

Ainda tenho pouco hábito das facilidades que nos são disponibilizadas.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

@jpaulino

Foi uma mania que apanhei.

O Interval não é certinho (ou pelo menos não era) e em certos casos com refrescamento de um segundo, podem saltar segundos, se o limite for muito à justa, como é o caso de 1000msecs.

Se os 1000msecs se traduzirem em 1001, o segundo anterior salta para o próximo, ignorando o do meio.

Já me aconteceu ver isso :)

Com os 900msecs garanto que a actualização é feita correctamente.

Mas lá está... pode ter sido uma burrice da altura e não ter actualizado por uma razão ou outra, e eu fiquei com a mania.

Os problemas podem ser de outras threads que estejam a bloquear a actualização. Usar, por exemplo, um backgroundworker pode ajudar, mas à partida não é preciso.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rycardo_

@ribeiro55 ,

Porque Interval = 900 e não Interval = 1000 ? É que assim nunca vai andar certo (se bem que tem pouca importância, mas é um preciosismo)

@rycardo_ ,

Coloca desta forma:

ToolStripStatusLabel1.Text = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")

Muito obrigado, funciona na perfeição, muito obrigado a todos...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
flaviojef

ate tinhas outra forma de pores as horas e o data actual na minha optica mais facil

crias uma label das por exemplo o nome de lbl_relogio

depois vais buscar um objecto chamado timer e colocas no form que queres respectivo onde crias.te a label

e dentro desse timer colocas isto:

'relogio
        Dim relogio As DateTime = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
        lbl_relogio.Text = relogio.ToString("HH:mm:ss")

e no mesmo sitio onde colocas este codigo podes meter o da data com outra nova label por exemplo lbl_data:

'data
Dim data As Date = DateValue(Now)
        lbl_data.Text = data.ToString("dd-MM-yyyy")

eu penso que desta forma é muito mais facil, até porque se nao precebes la muito disto é mais facil de entender

boa sorte

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Em que aspecto é que é mais fácil?

No mínimo é exactamente a mesma coisa.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

sim é a mesma coisa mas na minha optica é mais facil de compreender... só isso

Não é nada a mesma coisa!!!

        Dim relogio As DateTime = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)

Aqui defines uma hora concatenando valores (errado). E depois usas esse valor formatando como mostrei. Não tem sentido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

mas funciona

Existe tanto mau código que funciona ... até um dia!

Deves tentar sempre utilizar boas práticas de programação e não mau código :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
flaviojef

pois eu tambem nao sou barra nisto...

nem muito menos estou a criticar quem sabe, já agora obrigado pelo conselho nunca é demais saber mais  :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Eu estava-me a referir ao "metes um timer e metes o código dentro dele".

A única diferença para o outro é que um é criado em runtime e o outro em design.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação 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. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.