Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

TMonthCalendar OnClick nur wenn man ein Datum ausgewählt hat.

  Alt 21. Mai 2013, 16:07
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_startthen
 begin
   medt_customer_requested_start.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
   Sender.Free;
 end;
 if sender_name = 'mc_customer_request_endthen
 begin
   medt_customer_requested_end.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
   Sender.Free;
 end;
 if sender_name = 'mc_project_startthen
 begin
   medt_project_start.Text := FormatDateTime('dd.mm.yyyy', TMonthCalendar(Sender).Date);
   Sender.Free;
 end;
 if sender_name = 'mc_project_endthen
 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
Miniaturansicht angehängter Grafiken
monthcalendar.png  
  Mit Zitat antworten Zitat