Prepáč, ale tvoje riešenie sa mi veľmi nepáčilo, keďže na čas je komponenta DateTimePicker a mala by sa vlastne použiť tá. No, tak som skúsil nájsť riešenie sám a skončilo to takto:
TForm.OnCreate
dtpDateFrom.DateTime := Today;
dtpTimeFrom.DateTime := dtpDateFrom.DateTime;
dtpDateTo.DateTime := dtpDateFrom.DateTime;
dtpTimeTo.DateTime := dtpTimeFrom.DateTime;
TForm.DateTimePickerChange - nastaviť na všetky 4 túto metódu
begin
dtpDateFrom.DateTime := Int(dtpDateFrom.DateTime)
+ dtpTimeFrom.DateTime - Int(dtpTimeFrom.DateTime);
dtpDateTo.DateTime := Int(dtpDateTo.DateTime)
+ dtpTimeTo.DateTime - Int(dtpTimeTo.DateTime);
if dtpDateFrom.DateTime > dtpDateTo.DateTime then
begin
if ((Sender as TDateTimePicker) = dtpDateFrom)
or ((Sender as TDateTimePicker) = dtpTimeFrom) then
begin
dtpDateTo.DateTime := dtpDateFrom.DateTime;
dtpTimeTo.DateTime := dtpDateFrom.DateTime;
end;
if ((Sender as TDateTimePicker) = dtpDateTo)
or ((Sender as TDateTimePicker) = dtpTimeTo) then
begin
dtpDateFrom.DateTime := dtpDateTo.DateTime;
dtpTimeFrom.DateTime := dtpTimeTo.DateTime;
end;
end;
end;
No a časy sú v tým komponentách, ktoré majú v názve Date. Tie s názvom Time nemajú presný čas v prípade, že nedojde k stretnutiu časov, pretože časy sa preratúvajú len do do prvých dvoch komponent (prvé dva príkazy za begin).
Edit: Neexistuje protiklad k funkcii Int? Ide o to, že potrebujem odrezať desatinnú časť, pracovať s ňou a celú časť zahodiť. Na počítačoch Sharp MZ-800 na to bol v BASICu príkaz FRAC(). Potrebujem to na prvé dva príkazy za begin na odrezanie času z DateTime.