Chers tous,
j'ai un formulaire avec un TDateTimePicker. (BCB6 enterprise) Lorsque l'on change la date, je voudrais effectuer un certain traitement (enregistrer ce qui concerne la date qui �tait s�lectionn�e) et annuler la modif en cas d'erreur (remettre la date d'origine dans le TDateTimePicker).
Malheureusement, ca ne marche pas, je ne sais pas remettre la date d'origine apr�s qu'elle aie �t� s�lectionn�e.
Cas pour reproduire le souci: simplement essayer de remettre la date � TDate (1,1,1) si une condition est rencontr�e dans l'�v�nement OnChange.
Formulaire:
un checkbox cbError: si check�, il devrait m'emp�cher de s�lectionner une autre date.
bool m_bIgnoreChange: bool�en initialis� � false.
un TDateTimePicker nomm� dDate.
J'ai mis le code suivant dans l'�v�nement OnChange de dDate:
=> cbErrorbox est d�coch�, je peux mettre la date que je veux.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void __fastcall TFNewInputStyle::dDateChange(TObject *Sender) { if (m_bIgnoreChange) { m_bIgnoreChange=false; return; } if (IsNan(dDate->DateTime)) return; if (cbError->Checked) { ShowMessage("Modif interdite"); m_bIgnoreChange=true; // un évènement dDateChangeEvent sera déclenché, mais la date ne sera pas acceptée dDate->DateTime=TDate(1,1,1); } }
=> je coche cbErrorBox,
* j'ai un messagebox,
* il passe par le code dDate->DateTime=TDate(1,1,1);
* il passe par if (m_bIgnoreChange)
et rentre dans le test (et donc effectue m_bIgnoreChange=false; puis return; )
* et la date affich�e reste celle s�lectionn�e, il refuse de l'initialiser au 1/1/2001 ou a toute autre valeur......, et garde la date que je veux emp�cher de s�lectionner.
Quelqu'un connait-il une autre solution ou un autre composant plus "utilisable" dans un environnement ou un utilisateur peut se tromper?
Merci,
Alain
Partager