TEMPO OCIOSO

XAVIER 27/05/2015 15:59:20
#447092
Pessoal !

Preciso fazer o sistema invocar a tela de logar após 20 minutos ocioso, porém antes de fechar, salvar os dados do form ativo.

Alguém sabe me dar uma dica como fazer isso ?
TUNUSAT 27/05/2015 16:28:24
#447094
XAVIER,

Tenho uma idéia de como fazer...
... você coloca um timer com o tempo que quer derrubar.
Mas ANTES coloca uma chamada ao botão [Ô]salvar[Ô] da tela ... mas tem um problema ... e se os dados da tela NÃO forem validados?!? Tipo tiver erros ... perde a informação?

Por favor, veja este exemplo:

========================================================
COMO: Criar uma proteção de tela no Microsoft Visual Basic 6.0
https://support.microsoft.com/pt-br/kb/818365/pt-br
========================================================

[][ô]s,
Tunusat.
SIRIOUS 27/05/2015 22:06:48
#447110
Resposta escolhida
Aqui mesmo no forum, obtive algumas boas dicas, que me possibilitaram criar uma rotina em que, após um período ‘x’ ocioso, o sistema encerra sozinho (no meu caso, uma tela de consulta à base de dados. Para evitar corrupção de dados, caso o usuário deixe o PC ligado, esse form de consultas é automaticamente encerrado. Veja a rotina abaixo:
Option Explicit
Dim Tempo as Date
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub tmrTempo_Timer()
If Tempo = CDate([Ô]00:00:00[Ô]) Then
Unload frmListadePeças
Unload frmExibeFoto
Unload frmAjuda
‘Aqui vc pode inserir a rotina de gravação...
FrmPeças.Show
MsgBox [Ô]Consulta concluida ...[Ô] & vbNewLine & _
[Ô]Para voltar, clique em [Ô] & vbNewLine & _
[Ô]Consultas / Pela peça ...[Ô], 64
Else
Tempo = TimeValue(Tempo) - TimeValue([Ô]00:00:01[Ô])
lblTempo.Caption = [Ô]Fecha em [Ô] & Format(Minute(Tempo), [Ô]00[Ô]) & [Ô]:[Ô] & Format(Second(Tempo), [Ô]00[Ô] & [Ô] min[Ô])
lblTempo.Visible = True
Exit Sub
End If
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub Form Load()
…
Tempo = [Ô]00:05:00[Ô] ‘Ao carregar, fixa o tempo de exposição em 5 min.
...
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Tempo = [Ô]00:05:00[Ô]
...
End Sub

O que ela faz: Ao carregar o formulário de Consultas (que acessa a base de dados e as tabelas), um contador associado ao timer começa a contagem regressiva, iniciando com 5 min.
Qualquer movimento do mouse reposiciona o ponteiro em 05 min. Assim, sempre haverá tempo para consultar os dados, sem risco de o formulário fechar, decorridos os cinco minutos de inatividade do timer.
Contudo, se o usuário sair da sala e não retornar dentro de 5 min, o formulário é encerrado automaticamente.
No seu caso, basta inserir um evento para gravar os dados, quando o usuário resolver fechar o formulário. No caso de ele deixar o formulário aberto, após os cinco minutos, insira a rotina de gravação no timer, logo após o evento <Unload> do form no timer.
Abraços.
XAVIER 02/06/2015 09:12:32
#447292
Obrigado pessoal!
Tópico encerrado , respostas não são mais permitidas