Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.051 Beiträge
 
Delphi 2009 Professional
 
#1

TMonthCalendar - kein Ereignis für Änderungen / OnChange

  Alt 28. Apr 2022, 13:01
Hallo.

Ich habe einen TMonthCalendar. Wenn ich den mit der Maus bediene, wird ein OnClick-Event ausgelöst.

Wenn man TabStop auf True setzt und mit der Tastatur das Ding fokussiert (es ist nicht möglich, die Maus zu benutzen, um einen TMonthCalendar zu fokussieren!) kriege ich das nicht mit. Dass TabStop standardmäßig False ist und dass man das Ding nur mit der Tastatur fokussieren kann, sagt schon viel aus. Aber auch im Standardzustand besitzt das Ding ein Kontextmenü mit "Gehe zu Heute", von dessen Nutzung und der resultierenden Änderung ein Programm ebenfalls nichts mitbekommen kann.

Nun könnte man sagen: „Ja, aber es ist ja ein OnClick-Event.“ Stimmt, aber bei TCheckBox wird das Event auch per Tastatur ausgelöst. Bei TComboBox existiert ein OnClick-Event, dessen Benennung zu den größten ungeklärten Fragen der Menschheit gehört, da es zwar in allen möglichen Fällen ausgelöst wird – aber nicht beim Klicken auf das Steuerelement.

Ich habe mir dann einen Fix für die Methode procedure TMonthCalendar.CNNotify(var Message: TWMNotifyMC); geschrieben, wo das Event (falls zugewiesen) beim Fall MCN_SELECT, MCN_SELCHANGE: aufgerufen wird. Windows löst dieses neue OnChange-Event dann aus, wenn man die Tastatur benutzt oder besagtes Kontextmenüitem benutzt. Programmatische Änderungen an Date lösen es nicht aus.

Ich finde das aber von Delphi aus nicht normal. Wäre das ein Fall für QC?

(Getestet mit Delphi 2010 und 10.4.)
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat