![]() |
TMonthCalendar OnClick nur wenn man ein Datum ausgewählt hat.
Liste der Anhänge anzeigen (Anzahl: 1)
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:
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.
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; Ich möchte gerne nur das Datum übertragen, wenn im TMonthCalendar wirklich ein Datum gesetzt wird. Danke im Voraus. Sven |
AW: TMonthCalendar OnClick nur wenn man ein Datum ausgewählt hat.
Hallo,
du könntest mal folgenden Ansatz versuchen:
Delphi-Quellcode:
Gruß
type
TMonthCalendar = class(Vcl.ComCtrls.TMonthCalendar) strict private FSelection : Boolean; private procedure CNNotify(var Msg : TWMNotify); message CN_NOTIFY; public constructor Create (AOwner: TComponent); override; property Selection : Boolean read FSelection; end; Tfrm_request = class(TForm) // Alles wie gehabt end; implementation uses WinApi.CommCtrl; procedure TMonthCalendar.CNNotify (var Msg : TWMNotify); begin FSelection := Msg.NMHdr^.code = MCN_SELECT; inherited end; constructor TMonthCalendar.Create (AOwner : TComponent); begin inherited Create (AOwner); FSelection := False; end; procedure Tfrm_request.SetMonthCalendarDateToField(Sender: TObject); var sender_name : string; begin if not ((Sender is TMonthCalendar) and TMonthCalendar (Sender).Selection) then Exit; // Rest wie gehabt end; |
AW: TMonthCalendar OnClick nur wenn man ein Datum ausgewählt hat.
Danke für den Ansatz. Aufgrund der Zeit habe ich mir einfach ein neues Form genommen und es so abgeändert, dass es wie ein PopUp aussieht.
Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz