Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi DateTimePicker OnChange wird nicht ausgelöst (https://www.delphipraxis.net/193935-datetimepicker-onchange-wird-nicht-ausgeloest.html)

Luca Haas 26. Sep 2017 08:26

DateTimePicker OnChange wird nicht ausgelöst
 
Hi Leute habe nochmal eine Frage bezüglich des DateTimePickers,

und zwar habe ich ein OnChange Ereignis, welches ausgelöst wird, wenn ich die Daten im DateTimePicker per Klick ändere.
Allerdings ändere ich die Daten auch per Button je um einen Tag nach Vorne oder nach Hinten und dabei wird das OnChange Ereignis nicht ausgelöst.

TiGü 26. Sep 2017 08:28

AW: DateTimePicker OnChange wird nicht ausgelöst
 
Deine Frage dazu lautet also wie folgt?

Luca Haas 26. Sep 2017 08:31

AW: DateTimePicker OnChange wird nicht ausgelöst
 
Warum wird das OnChange nicht durch die Buttons ausgelöst? Im EditFeld wird das Datum durch meine Buttons geändert, aber das OnChange wird nicht ausgelöst.

TiGü 26. Sep 2017 08:39

AW: DateTimePicker OnChange wird nicht ausgelöst
 
Wenn du im DateTimePicker die Werte änderst, dann wird die Methode TDateTimePicker.CNNotify aufgerufen.
Hier drin wird je nach Windows-Message Datum und Uhrzeit gesetzt (TCommonCalendar.SetDate von der übergeordneten Klasse und TDateTimePicker.SetTime).
Anschließend wird TDateTimePicker.Change aufgerufen. In dieser Methode wird dein Event-Handler angesprochen, insofern du einen angefügt hast.

Wenn du bspw.
Delphi-Quellcode:
DateTimePicker1.Date := Date;
im Code schreibst, rufst du intern direkt SetDate auf und umgehst die Benachrichtigung durch den Event-Handler.
Du kannst dir Abhilfe schaffen, in dem du es folgendermaßen schreibst:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  DateTimePicker1.Date := Date;
  DateTimePicker1.OnChange(nil);
end;

Luca Haas 26. Sep 2017 08:56

AW: DateTimePicker OnChange wird nicht ausgelöst
 
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  DateTimePicker1.OnChange(nil);
end;
So klappt es, wenn ich die andere Zeile mit rein nehme bleibt der DateTimePicker durchgehend beim aktuellen Datum.

Aber danke :-D

TiGü 26. Sep 2017 09:28

AW: DateTimePicker OnChange wird nicht ausgelöst
 
Zitat:

Zitat von Luca Haas (Beitrag 1382024)
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  DateTimePicker1.OnChange(nil);
end;
So klappt es, wenn ich die andere Zeile mit rein nehme bleibt der DateTimePicker durchgehend beim aktuellen Datum.

Aber danke :-D

Ja, das diente auch nur zur Anschauung, damit die Date-Eigenschaft geändert wird...:roll:
Erwarte nicht, dass wir immer in unseren Codeschnipseln haargenau für dich passende Lösungen schreiben.
Diese Transferleistung musst du schon selber erbringen.

Redeemer 26. Sep 2017 11:45

AW: DateTimePicker OnChange wird nicht ausgelöst
 
Es ist manchmal etwas seltsam, wann bei Delphi bei Änderungen mittels Code ein gewisses Ereignis ausgelöst wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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