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

kazzx

Objecto TIMER para datagrid

15 mensagens neste tópico

no datagridview tenho 3 colunas.

exemplo: uma coluna apresenta irá apresentar nomes, com várias rows, outra coluna serão combobox's, e outra coluna é a hora, onde cada row apresenta por exemplo 12H30 (sempre mais meia hora do que a hora do sistema) . irão aparecer N rows.

eu queria saber como fazer aparecer uma MSGBOX com o nome da primeira coluna a dizer " O utilizador tal tem de abandonar o PC", quando chegar à hora apresentada na coluna.

se na linha 5 a hora for igual à hora do sistema então faz aparecer uma msgbox, e para cada row.

para isso precisarei de um timer?

fiz-me entender?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, um timer é uma ideia.

Se percorreres todas as linhas da datagrid e fizeres a verificação do tempo por cada uma delas, é fácil obter o que pretendes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e como posso fazer isso ? :x

ps: ultimamente ando constantemente no P@P a tirar dúvidas pois tenho em mãos um projecto que muitas das funcionalidades vão para além dos meus conhecimentos, por isso muitas das minhas questões são para vocês fáceis, mas como não sei, pergunto  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No timer, com um intervalo largo (não precisa de ser muito apertado. 30000 no interval é suficiente):

        For DRI As Integer = 0 To DGView.Rows.Count - 2
            Dim TempHora As Date = CDate(DGView.Rows(DRI).Cells(1).Value.ToString)
            Dim TempSpan As TimeSpan = TempHora - CDate(Now.ToShortTimeString)
            If TempSpan.Minutes < 0 Then
                MsgBox(DGView.Rows(DRI).Cells(0).Value.ToString & ", baza do pc")
            End If
        Next

Assumindo que a coluna 0 é o nome e a coluna 1 é a hora.

Vê lá se entendes, o que aí está. Não tenhas problemas em tirar dúvidas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Possas, não.

30000 msecs = 30 segundos.

Não sei qual é a tua necessidade. A 30 segundos garante que a verificação corre em todos os minutos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a minha necessidade é para cada row, ou neste caso para cada pessoa, ao fim de meia hora apareça uma mensagem a dizer 'Hora de abandonar posto' ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

portanto, eu no evento 'Tick' do timer coloquei o código que me deste, mas para ver a mensagem sem esperar meia hora eu mudei de meia hora para 1 minuto, ou seja, em vez de aparecer a hora com 30 minutos depois da hora do sistema, aparecer com 1 minuto depois da hora do sistema.

e nenhuma mensagem me é apresentada :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

30000 msecs não é meia hora. São 30 segundos.

Usa breakpoints. É fácil de entenderes o problema se seguires o fluxo do código.

Por o sim e por o não, verifica também se por acaso não deixaste o timer Enabled=False ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oh esquece, eu não tinha mudado o número da coluna, tens razão.

mas tipo, ao fim de 30 segundos aparece uma msgbox, mas aparecem tantas msgbox quantas rows tenho.

por exemplo, se na row do nome tiver o nome 'Manel' passado 30 segundos aparece uma msgbox, mas se estiveram lá mais rows com os nomes, aparece uma msbox para cada row e não deveria.

só deveria aparecer uma msgbox ao fim de 30 segundos (neste caso) para cada row. faço-me entender?

por exemplo: faço aparecer um novo nome no datagridview às 14h:40m:00s e faço aparecer outro nome às 14h:40m:10s, aparecem duas msgbox's seguidas, e não deveria. deveria sim aparecer uma msgbox às 14:40:30s e outra às 14:40:40s , tipo isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então tens de controlar ao segundo.

Trocas a diferença do span para "Seconds" e baixas o interval para 1000.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu mudei para Seconds e mudei o interval para 1000, e opah, a cada segundo aparecia uma mensagem e foi uma festa de mensagens aqui no monitor  ;):)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É normal.

Tu agora é que tens de controlar o que tens de fazer com isso.

Podes sacar o gajo da lista, ou marcar como "Já avisado" para evitar que o ciclo o volte a apanhar.

Tu é que sabes o que isso está a fazer e tu é que sabes o que queres que aconteça depois e mais importante, tu é que sabes o que isso é.

Já chega de peixe pah, agarra mas é na cana e faz-te ao lago ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ahah, vou tentar vou tentar ;)

mudar em vez de aparecer tantas msgbox quantas rows existentes, para fazer aparecer uma msgbox após ter contado 30 segundos de cada nova row ter aparecido no datagrid x)

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