Moin zusammen,
ich erzeuge ein TMonthCalendar, wenn der Benutzer auf eins der 4 Kalender Icon drückt, um ein Datum auswählen zu lassen und es dann in ein TMaskEdit Feld zu schreiben. Damit möchte ich Falscheingaben vermeiden sowie einen Kalender zur Verfügung stellen. DateTimePicker kommt nicht in Frage, da es auch kein Datum geben kann und mir nicht gefällt.
Delphi-Quellcode:
procedure Tfrm_request.SetMonthCalendarDateToField(Sender: TObject);
var
sender_name : string;
begin
sender_name := (Sender as TComponent).Name;
if sender_name = 'mc_customer_request_start' then
begin
medt_customer_requested_start.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
Sender.Free;
end;
if sender_name = 'mc_customer_request_end' then
begin
medt_customer_requested_end.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
Sender.Free;
end;
if sender_name = 'mc_project_start' then
begin
medt_project_start.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
Sender.Free;
end;
if sender_name = 'mc_project_end' then
begin
medt_project_end.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
Sender.Free;
end;
end;
...
procedure Tfrm_request.img_customer_requested_start_calenderClick(
Sender: TObject);
var
monCal : TMonthCalendar;
begin
monCal := TMonthCalendar.Create(Self);
with monCal do
begin
Parent := p_dates;
Name := 'mc_customer_request_start';
Left := 120; //95
Top := img_customer_requested_start.Top + img_customer_requested_start.Height+4;
OnClick := SetMonthCalendarDateToField;
end;
end;
...
procedure Tfrm_request.img_customer_requested_end_calenderClick(
Sender: TObject);
var
monCal : TMonthCalendar;
begin
monCal := TMonthCalendar.Create(Self);
with monCal do
begin
Parent := p_dates;
Name := 'mc_customer_request_end';
Left := 120; //95
Top := img_customer_requested_end.Top + img_customer_requested_end.Height+4;
OnClick := SetMonthCalendarDateToField;
end;
end;
Mein Problem ist jetzt nur, dass jeder Klick auf das erzeugte TMonthCalender die OnClick Prozedur auslöst, d.h. auch wenn der Monat gewechselt wird. Das ist unglücklich.
Ich möchte gerne nur das Datum übertragen, wenn im TMonthCalendar wirklich ein Datum gesetzt wird.
Danke im Voraus.
Sven