Blokada wyboru dat w DateTimePicker.

Odpowiedz Nowy wątek
2015-01-20 18:03
0

Witam,
mam dwa komponenty DateTimePicker.
W pierwszym DateTimePicker1 użytkownik wybiera datę.
W drugim DateTimePicker2 chcę aby użytkownik mógł wybrać jedynie datę nie mniejszą od tej z DateTimePicker1(jakieś wyszarzenie mniejszych dat - coś w tym rodzaju).

Istnieje taka możliwość?
Proszę o pomoc.

Pozostało 580 znaków

2015-01-20 18:24
3

@dam1an: po co podajesz kod w innym języku, skoro pytanie jest o Delphi. Ogarnij się.

@lukasz_p92: według mnie, nie ma takiej możliwości żeby na standardowym TDateTimePicker coś wyszarzyć. Ale można po wybraniu daty sprawdzić to czy jest ona wyższa od tamtej z innego Pickera. I reagować komunikatem, przywracając domyslną datę. Dodatkowo obok tego drugiego Pickera ja po prostu dałbym jakiś TLabel / TGroupBox itp - z informacją. ze program oczekuje takiego rodzaju daty.


No wyszarzyć może nie wyszarzy, ale jest identyczna właściwość MinDate w Delphi i to jak najbardziej działa - tj. nie da się wybrać daty wcześniejszej. - szopenfx 2015-01-20 18:28
Sorry, nie wiem jak ja się tu znalazłem. Wydawało mi się że jestem w dziale .Net :D - dam1an 2015-01-20 18:57
Szkoda, że nie można ręcznie malować tego komponentu - nie ma zdarzenia OnDrawItem itd.; - furious programming 2015-01-20 21:25

Pozostało 580 znaków

2015-01-20 18:35
0

Przy Ustaleniu

 DateTimePicker1.MinDate

otrzymuję niepożądany komunikat:
,,Date is less than minimum of 20-01-2015."
Można go jakoś ukryć/wyłączyć?

edytowany 2x, ostatnio: lukasz_p92, 2015-01-20 18:36

Pozostało 580 znaków

2015-01-20 18:43
3

Leci wyjątek, możesz go sobie obsłużyć jak chcesz np. tak

  try 
    DateTimePicker1.Date := Now -7
  except
    beep;
  end;

Pozostało 580 znaków

2015-01-20 20:29
0

Wszystko działa, lecz gdy klikam na rekord w DBGrid (posiadam tam daty w kolumnie) z datą mniejsza od tej którą określiłem w

dateTimePicker2.MinDate:=TRUNC(DateTimePicker1.Date);  

nie chce się wyświetlić.
Po zapisaniu rekordu zmieniłem

DateTimePicker2.MinDate:=0  

, lecz nic nie dało.
Teraz w DateTimePicker wyświetla jedynie daty większe...

Jakiś pomysł dlaczego tak się dzieje ?

Pozostało 580 znaków

2015-01-20 20:36

a tak?

   DateTimePicker1.MinDate := MinDateTime;

Pozostało 580 znaków

2015-01-20 20:42
0

Dzięki, o to chodziło.

Pozostało 580 znaków

2015-01-23 23:49
0

A może ktoś słyszał coś o ustaleniu minimalnego czasu w DateTimePicker?

Pozostało 580 znaków

2015-01-24 09:34
2

Ale co tutaj "słyszeć"? Po prostu zakodź sobie sprawdzanie dla TDateTimePicker z Kind na dtkTime.

procedure TForm1.DateTimePicker1Change(Sender : TObject);
var
  MinTime : TTime;
  DTP : TDateTimePicker;
begin
  DTP := TDateTimePicker(Sender);
  MinTime := EncodeTime(09, 00, 00, 00);
  if DTP <> nil then
  begin
    DTP.Date := 0;
    if DTP.Time < MinTime then
    begin
      DTP.Time := MinTime;
    end;
  end;
end;

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0