Jump to content
Bartude

Por timer a funcionar em todo o programa

Recommended Posts

Bartude

Boas, eu tenho um projecto onde estou a exportar automaticamente registos pa um bloco de notas, e esta a funcionar num timer, a verificar cada segundo, quando o tempo que esta estabelecido na base de dados chegar. O problema é, que esta funcionalidade só funciona se o formulario estiver sempre aberto. E eu queria que isto corresse em todo o programa, não importa o formulario que estivesse aberto.

Agradeço qualquer ajuda

Share this post


Link to post
Share on other sites
Chaveca

Poidias fazer esse processo num user control e adicionalos escondido aos varios forms, embora ache pouco practico, não seria melhor simplesmente fazeres os utilizadores esperarem a veres uma status bar ate isso ser feito?


"Há 10 tipos de pessoas, as que sabem binário e as que não...""Run DOS, Run!"

Share this post


Link to post
Share on other sites
Bartude

Nao, porque tipo, aquilo é mesmo para o acaso de as pessoas se esquecerem. Assim, mesmo se tiverem se esquecido de ir ao formulario para aquilo exportar, aquilo exportava automaticamente

Share this post


Link to post
Share on other sites
cmd

Penso que que conseguires criar um timer dentro de uma Class que consegues ter isso acessível a todas as forms do teu programa ;)


Cumps.cmd

Share this post


Link to post
Share on other sites
Bartude

Depois se eu conseguir fazer isso, chamo a classe no Load dos forms??

Share this post


Link to post
Share on other sites
Ratakamom

Eu sei que a ideia é criar um timer de modo a guardar os dados automaticamente, mas se o objectivo é guardar os dados das pessoas que esquecem de o fazer podias optar por uma coisa mais simples.

(Sinceramente não percebi isso da class, por isso apenas estou a dar uma alternativa ao problema)

Podias fazer algo do genero:

dim novoregisto as integer = 0
Private Sub TextBox1_TextChanged(...)
novoregisto = 1 ' declara que existe um membro do formulario que foi alterado
end sub

Private Sub Form1_FormClosing
if novoregisto = 1 then

If msgbox("Tem alterações não guardadas, deseja guarda-las?") = MsgBoxResult.Yes Then
(exportava para o documento)
    novoregisto = 0 ' declara que ja existem novos registos pois foram agora gravados
        ElseIf MsgBoxResult.No Then
    novoregisto = 0 ' o novoregisto faz reset pois não ha necessidade de guardar os dados modificados
        ElseIf MsgBoxResult.Cancel Then
            e.cancel = true
        Exit Sub
End If
End if

Share this post


Link to post
Share on other sites
Bartude

Nao sei se foi eu que percebi mal, mas acho que nao. A ideia nao é essa, o utilizador tem um formulario à parte onde guarda as definições, e depois noutro formulario é a exportação manual. A minha era, não importa o formulario em que estivesse, a exportação ocorria automaticamente.

Share this post


Link to post
Share on other sites
cmd

Eu sei que a ideia é criar um timer de modo a guardar os dados automaticamente, mas se o objectivo é guardar os dados das pessoas que esquecem de o fazer podias optar por uma coisa mais simples.

(Sinceramente não percebi isso da class, por isso apenas estou a dar uma alternativa ao problema)

Podias fazer algo do genero:

dim novoregisto as integer = 0
Private Sub TextBox1_TextChanged(...)
novoregisto = 1 ' declara que existe um membro do formulario que foi alterado
end sub

Private Sub Form1_FormClosing
if novoregisto = 1 then

If msgbox("Tem alterações não guardadas, deseja guarda-las?") = MsgBoxResult.Yes Then
(exportava para o documento)
    novoregisto = 0 ' declara que ja existem novos registos pois foram agora gravados
        ElseIf MsgBoxResult.No Then
    novoregisto = 0 ' o novoregisto faz reset pois não ha necessidade de guardar os dados modificados
        ElseIf MsgBoxResult.Cancel Then
            e.cancel = true
        Exit Sub
End If
End if

Podes criar um timer programaticamente dentro de uma class, era isso que eu estava a tentar dizer ;)

@Bartude, tenta criar um timer programaticamente dentro de uma class e vê se funciona como queres :D


Cumps.cmd

Share this post


Link to post
Share on other sites
Bartude

@cmd: Tipo, eu criei uma classe, mas nao estou a conseguir inserir um timer :/

Share this post


Link to post
Share on other sites
Caça
Dim WithEvents Tim As New Timer


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Bartude

epa, desculpa a pergunta noob, mas eu meto isso depois da declaração da classe, mas depois como é que funciono com isso? :x

Share this post


Link to post
Share on other sites
Caça

É mais ou menos isto

Public Class TimeraFuncionar
    Dim WithEvents Tim As New Timer

    Public Sub Inicia()
        Tim.Start()
    End Sub

    Public Sub Para()
        Tim.Stop()
    End Sub

    Private Sub Tim_Tick(sender As Object, e As System.EventArgs) Handles Tim.Tick
        'Coloca aqui o teu código
    End Sub

End Class


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cmd

Com o código do @Caça penso que já deves conseguir fazer o que pretendes :D agora basta meteres o código que já tinhas no teu timer dentro da classe ;)


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

Isto diz que tim.start e tim.stop nao são membros de Timer

O nome que deste à classe foi "Timer"?

Se foi tens de mudar


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Bartude

ja esta, mas eu tento por isso no load dum formulario, tipo: Call timerafuncionar()

mas nao da.

Share this post


Link to post
Share on other sites
Caça

Para isso não deves usar uma classe mas sim um Modulo

Public Module TimeraFuncionar
    Dim WithEvents Tim As New Timer

    Public Sub Inicia()
        Tim.Start()
    End Sub

    Public Sub Para()
        Tim.Stop()
    End Sub

    Private Sub Tim_Tick(sender As Object, e As System.EventArgs) Handles Tim.Tick
        'Coloca aqui o teu código
    End Sub

End Module

Para utilizar

Inicia()


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.