TDateTimePicker "before update"?
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:
Code:
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);
}
} |
=> cbErrorbox est d�coch�, je peux mettre la date que je veux.
=> 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...... :arf: , 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