PDA

Ver la Versión Completa : seleccionar hora en datetimepicker desde hora especifica


gonza_619
18-11-2010, 13:38:55
hola a todos, miren necesito seleccionar una hora de inicio y hora final, pero q este en el rango por ej: desde 5 pm hasta 8 pm, y que no salga de ese rango, es decir puedo seleccionar desde 6 pm hasta 7pm, q no pase de 8 y menos de 5. segun cambie el estado de una variable, osea si por ej, la variable X=1 entonces q el dtpker se habilite para seleccionar hora entre las 5 y las 8 pm.
O que el dtpcker empieze desde una hora especifica no se si sera algo como:
if x=1 then
datetimepicker1.time:=5:0:0 p.m.

tambien queria saber como ver solo la hora y minutos y no los segundos en 24hs.
muchas gracias

gonza_619
18-11-2010, 14:23:43
hola a todos, miren necesito seleccionar una hora de inicio y hora final, pero q este en el rango por ej: desde 5 pm hasta 8 pm, y que no salga de ese rango, es decir puedo seleccionar desde 6 pm hasta 7pm, q no pase de 8 y menos de 5. segun cambie el estado de una variable, osea si por ej, la variable X=1 entonces q el dtpker se habilite para seleccionar hora entre las 5 y las 8 pm.
O que el dtpcker empieze desde una hora especifica no se si sera algo como:
if x=1 then
datetimepicker1.time:=5:0:0 p.m.

tambien queria saber como ver solo la hora y minutos y no los segundos en 24hs.

bueno creo q me voy a decidir en guardar la hora pero cambiando dtpicker.format= HH:mm en un campo string seria algo asi?

tablex.fieldbyname('hora').asstring:=timetostr(dtpicker1.time);

estaria bien esta forma?

muchas gracias
gracias de nuevo

Caro
18-11-2010, 16:19:16
Hola gonza, puedes utilizar el evento OnChange de tu DateTimePicker:

El formato de tu DateTimePicker HH:MM.


procedure TForm1.DateTimePicker1Change(Sender: TObject);
var
HoraAct : Integer;
begin
HoraAct := HourOf(DateTimePicker1.Time);
//si no esta entre las 17 y 20 horas o la hora ini es mayor que la hora fin, le ponemos la hora con la que empieza el rango
if Not((HoraAct>=17) and (HoraAct<=20)) or (CompareTime(DateTimePicker1.Time,DateTimePicker2.Time)=1) Then
DateTimePicker1.Time := EncodeTime(17,MinuteOf(DateTimePicker1.Time),0,0);


algo parecido para tu segundo DateTimePicker que indica la hora final

Saluditos

gonza_619
20-11-2010, 18:57:04
hola de nuevo , bueno mira sale de 10, pero ahora , tengo que comrpboar con un checked si se selecciono hora en dtpicker, lo que hice fue agregar showcheckbox, y luego checked en false. al parecer no funciona si cambio a formato 24 hs, no me deja seleccionar el dtpicker, como podria solucionarlo

ecfisa
21-11-2010, 20:42:19
Hola gonza.

Si pones la propiedad ShowCheckBox en True y la propiedad Checked está en False no te va a permitir hacer cambios.
Esta esta última propiedad es la que te permite o no, realizar cambios.

Para despejar toda duda relizá esta prueba:

procedure TForm1.FormShow(Sender: TObject);
begin
with DateTimePicker1 do
begin
Kind:= dtkTime;
Format:= 'HH:mm:ss'; // formato 24 hs
ShowCheckBox:= True; // mostrar casilla de verificación
DateTimePicker1.Checked:= True; // el componente está seleccionado
end;
end;


Verás que si hacés click sobre la hora, minutos o segundos te permite realizar los cambios sin problemas.

Saludos. :)