PDA

Ver la Versión Completa : Error(Date exceeds maximum ) con DateTimePicker de minDate y maxdate


thelibmx
31-10-2007, 19:52:59
hola amigos creo que esta es una consulta simple pero un poco liosa para mi, veran tengo un combobox que me marca años del 2008 al 2030 y tengo dos datatimepiker con dos tedits, entonces lo que yo quiero hacer es que cuando yo seleccione por ejemplo año 2008 en el combo box, solo me permita seleccionar un rango de fechas en el datatimepiker,por ejemplo en el caso de 2008 del 01/01/2008 al 15/01/2009, doy quince dias de mas de margen por que son necesarios para el programa que estoy haciendo, y asi sucesivamente, es decir si selecciono 2020 pues seria 01/01/2020 al 15/01/2021, espero haberme dado a entender, la verdad que eso ya lo tengo solucionado pues mi codigo es este

procedure TForm1.ComboBox1Change(Sender: TObject);
var
anio:integer;
begin
anio:=strtoint(ComboBox1.text);
Edit1inicio.text:=('01/01/'+inttostr(anio));
Edit2fin.Text:=('15/01/'+inttostr(anio+1));
DateTimePicker1.minDate:=strtodate(Edit1inicio.text);
DateTimePicker1.date:=strtodate(Edit1inicio.text);
DateTimePicker1.MaxDate:=strtodate(Edit2fin.text);
DateTimePicker2.minDate:=strtodate(Edit1inicio.text);
DateTimePicker1.date:=strtodate(Edit1inicio.text);
DateTimePicker2.maxDate:=strtodate(Edit2fin.text);
end;

y pues la primera ves funciona de lujo, tal como lo que quiero hacer, pero cuando cambio a un año mas alto o mas bajo en el combo, pues me manda un error de Date exceeds maximum of 12/01/2010 se que se genera por los limites de las fechas que asigno, intente poner un try except pero no funciono, si quito la fecha del maxdate si funciona pero necesito restrigir tambien la fecha maxima, se los agradeceria mucho si pudieran darme una pista o una solucion que pueda ayudarme con ese problema, de antemano muchas gracias :D

marcoszorrilla
31-10-2007, 21:29:28
No sé si con este código respondo a lo que pides, ya dirás:

procedure TForm1.ComboBox1Change(Sender: TObject);
var
anio:integer;
f:TDate;
begin
f:=StrToDate('30/12/1899');
anio:=strtoint(ComboBox1.text);

Edit1inicio.text:=('01/01/'+inttostr(anio));
Edit2fin.Text:=('15/01/'+inttostr(anio+1));
DateTimePicker1.minDate:=f;
DateTimePicker1.MaxDate:=f;
DateTimePicker2.minDate:=f;
DateTimePicker2.maxDate:=f;


DateTimePicker1.minDate:=strtodate(Edit1inicio.text);
DateTimePicker1.date:=strtodate(Edit1inicio.text);
DateTimePicker1.MaxDate:=strtodate(Edit2fin.text);
DateTimePicker2.minDate:=strtodate(Edit1inicio.text);
DateTimePicker1.date:=strtodate(Edit1inicio.text);
DateTimePicker2.maxDate:=strtodate(Edit2fin.text);
end;

Un Saludo.

thelibmx
01-11-2007, 00:07:17
Muchas gracias marcoszorrilla era lo que necesitaba, no sabia por donde pero ya quedo, gracias por tu ayuda amigo