Fórum Programa em intervalo de hora #604693
20/08/2019
0
Preciso de ajuda para que o sistema só funcione no intervalo de horas determinado.
Por exemplo: o sistema só vai funcionar das 08:00 - 12:00 e das 13:00 - 18:00.
Fora desse intervalo o sistema da um ShowMessage e encerra a aplicação automaticamente.
Se alguém tem alguma ideia agradeço.
Jordan Bernardes
Curtir tópico
+ 0Post mais votado
20/08/2019
unit ThreadHorarioPermitido;
interface
uses
System.Classes, Vcl.ExtCtrls, System.SysUtils, WinAPI.Windows;
type
THorarioPermitido = class(TThread)
private
{ Private declarations }
Relogio: TTimer;
procedure Temporizador(Sender: TObject);
protected
procedure Execute; override;
public
constructor create; overload;
destructor Destroy; override;
end;
const
cHr1Ini: pchar = '08:00:00';
cHr1Fim: pchar = '12:00:00';
cHr2Ini: pchar = '13:00:00';
cHr2Fim: pchar = '18:00:00';
implementation
{ THorarioPermitido }
constructor THorarioPermitido.create;
begin
Relogio := TTimer.Create(nil);
Relogio.Enabled := False;
Relogio.Interval := 1000; // 1 segundo
Relogio.OnTimer := Temporizador;
Relogio.Enabled := True;
inherited create;
end;
destructor THorarioPermitido.Destroy;
begin
inherited;
end;
procedure THorarioPermitido.Execute;
begin
{ Place thread code here }
end;
procedure THorarioPermitido.Temporizador(Sender: TObject);
begin
if not ( ( (TimeToStr(Time) >= cHr1Ini) and (TimeToStr(Time) <= cHr1Fim) ) or
( (TimeToStr(Time) >= cHr2Ini) and (TimeToStr(Time) <= cHr2Fim) )
) then
begin
Relogio.Enabled := False;
FreeAndNil(Relogio);
MessageBox(0,pchar('Horário não disponível para utilização do sistema.'+chr(13)+chr(13)+
'O sistema pode ser utilizado das '+cHr1Ini+' as '+cHr1Fim+' e das '+cHr2Ini+' as '+cHr2Fim),
'Uso não autorizado',mb_iconerror);
Halt;
end;
end;
end.Para utilizar, inclua a unit ThreadHorarioPermitido na cláusula uses do projeto (se não estiver declarada ali) e adicione a linha para criação da thread.
algo assim:
program Project6;
uses
Vcl.Forms,
Unit5 in 'Unit5.pas' ,
Unit1 in 'Unit1.pas' ,
ClasseTags in 'ClasseTags.pas',
ThreadHorarioPermitido in 'ThreadHorarioPermitido.pas'; // << unit da thread de controle do horário de uso
{$R *.res}
var
Form5: TForm5;
HorarioPermitido: THorarioPermitido; // << variável para instância da thread
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
HorarioPermitido := THorarioPermitido.create; // << cria a instância da thread (e executa)
Application.CreateForm(TForm5, Form5);
Application.Run;
end.Emerson Nascimento
Gostei + 2
Mais Posts
20/08/2019
Manoel Junior
Gostei + 0
28/08/2019
Jordan Bernardes
temp1.Time:= Now;
if (temp1.Time < tempv1.Time) or (temp1.Time > tempv2.Time) then
begin
Timer2.Enabled:= False;
MessageDlg('O horario de funcionamento do aplicativo é das 08:00h à 18:00h',
System.UITypes.TMsgDlgType.mtInformation,
[System.UITypes.TMsgDlgBtn.mbOK], 0,
procedure(const BotaoPressionado: TModalResult)
begin
case BotaoPressionado of
mrOk: begin
Application.Terminate;
end;
end;
end
);
end;
E no tempv1 na propriedade time informei a hora 08:00:00 e no tempv2 na propriedade time informei a hora 18:00:00.
Muito obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)