TDateTimePicker utilisé comme un inplace editor d'un TDBGrid avec une gestion du défilement horizontale et vertical, le bon positionnement peut être délicat et pourra changer selon le comportement de la VCL impacté par Windows, les Styles ...
En plus pour une saisie rapide où l'utilisateur enchaine les données, le TDateTimePicker en plus est un peu capricieux sur sa saisie, son masque est très rigide.
C'est le bouton calendrier qui vous est nécessaire
Si oui, voir plus bas ButtonStyle
Si non, un Format suffit largement sans créer un control via TDateField EditMask pour la saisie et DisplayFormat pour l'affichage + OnValidate pour vérifier que c'est une date valide
un champ TDateField devrait contenir le mask date de l'OS ... cela ne serait pas une saisie dans un TStringField par hasard ?
la version EditMask permet de supprimer tout besoin d'un controle et donc tout problème de Focus et de "Next Control" lors du TAB
ButtonStyle : Il faut mettre une column en ButtonStyle to cbsEllipsis pour créer un bouton et gérer OnEditButtonClick
J'ai fourni le code complet :
DBGridEventDatesEditButtonClick qui va créer à la volée un TDateTimePicker dans une fenêtre de dialogue qui ressemble à un InputQuery mais on peut faire quelque chose de plus réduit à presque donner l'impression que le champ est dans la grille.
Les deux peuvent être combiner évidemment, c'est ce qui donne l'impression d'avoir un TDateTimePicker dans la grille mais en réalité c'est EditMask + cbsEllipsis combiné qui donne cette illusion.
Partager