Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Activar Botones por horario (https://www.clubdelphi.com/foros/showthread.php?t=66989)

jandres 23-03-2010 15:53:36

Activar Botones por horario
 
Saludos a esta gran comunidad tengo una aplicacion de ponche de empleados tengo 4 botones que son lo siguientes

Entrada
Salida almuerzo
Entrada almuerzo
Salida almuerzo

me gustaria saber como puedo hacer Entrada se active de 8:00 am. a 12:00 pm. 12:00 pm. a 2:00 pm. Entrada Almuerzo y asi por favor si me pueden ayudar con el codigo pues tengo la idea pero no se como hacer lo. estoy utilizando delphi 7 y sql mediante navicar gracias de antemano por su ayuda soy novato y lo poco que se es por esta gran comunidad.

BrunoBsso 23-03-2010 16:06:38

Hola.
Para esta solución usé 2 botones TButton y un TTimer.
Los botones empiezan deshabilitados y el OnTimer decide si se habilitan.
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Horario:TDateTime;
begin
  Button1.Enabled:=False;
  Button2.Enabled:=False;
  Horario:=GetTime;
  if (Horario >= StrToDateTime('08:00:00')) and (Horario <= StrToDateTime('19:59:59')) then
    Button1.Enabled:=True
  else
  if (Horario >= StrToDateTime('20:00:00')) and (Horario <= StrToDateTime('07:59:59')) then
    Button2.Enabled:=True;
end;
Ahora tenés una idea de cómo hacerlo.
Saludos!

maeyanes 23-03-2010 16:17:12

Hola...

Otra opción es redefinir el método UpdateActions de la clase TForm:

Código Delphi [-]
TMyForm = class(TForm)
protected
  procedure UpdateActions; override;
end;

implementation

procedure TMyForm.UpdateActions;
var
  CurrentTime: TTime;

begin
  inherited;
  CurrentTime := Now;
  btnEntrada.Enabled := (CurrentTime >= StrToTime('8')) and (CurrentTime <= StrToTime('11:59'));
  btnEntradaComida.Enabled := (CurrentTime >= StrToTime('12')) and (CurrentTime <= StrToTime('13:59'))
end;


Saludos...

BrunoBsso 23-03-2010 18:24:49

Tiene razón [maeyanes].
Es mejor haciéndolo con una asignación directa sin el if.
Yo por mi parte opto por usar el TTimer pero haciendo la asignación directa.
O sea
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Horario:TTime;
begin
  Horario:=GetTime; //Usando Now no me calcula bien los horarios
  BtEntrada.Enabled:=(Horario >= StrToTime('08:00:00')) and (Horario < StrToTime('12:00:00'));
  BtEntradaAlmuerzo.Enabled:=(Horario >= StrToTime('12:00:00')) and (Horario < StrToTime('14:00:00'));
  BtSalidaAlmuerzo.Enabled:=(Horario >= StrToTime('14:00:00')) and (Horario < StrToTime('18:00:00'));
  BtSalida.Enabled:=(Horario >= StrToTime('18:00:00')) and (Horario < StrToTime('08:00:00'));
end;


La franja horaria es GMT +2. Ahora son las 19:43:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi