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 : 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);
        }
}
=> 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...... , 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