Bonjour à tous,

Est-ce qu'il existe un moyen d'annuler un click sur un radiobutton pour revenir à l'état précédent ? ou alors existe-t-il un moyen de connaître quel radiobutton était checké avant le click sur un autre?

Je m'explique, J'ai 5 radiobuttons qui sont groupés et lorsque je clique sur l'un d'eux, je demande une confirmation de modification (Voulez-vous continuer?)
Donc si la confirmation est refusée, le click ne doit pas être effectué et le radiobutton qui était checké jusque là doit le rester alors que si la confirmation est acceptée, le radiobutton sur lequel on a clické doit se cocher. (j'espère que vous comprenez mon charabia)

Bien sûr, je pourrait utiliser une variable pour enregistrer l'état courant et le rétablir en cas de non confirmation. J'ai fait ce petit test qui fonctionne mais que je ne trouve pas très pratique (On a juste une petite forme avec 5 radiobuttons qui utilisent des fonctions communes pour les évènements onEnter et onClick :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
 
Var
  CurrentSelect : TAdvOfficeRadioButton;
  RetourArriere : Boolean = False;
 
procedure TForm1.RBEnter(Sender: TObject);
begin
     Label1.Caption:='MouseDown '+(sender as TAdvOfficeRadioButton).Name;
 
     If Rb1.Checked = True Then CurrentSelect := Rb1
     Else If Rb2.Checked = True Then CurrentSelect := Rb2
     Else If Rb3.Checked = True Then CurrentSelect := Rb3
     Else If Rb4.Checked = True Then CurrentSelect := Rb4
     Else If Rb5.Checked = True Then CurrentSelect := Rb5;
 
     Label2.Caption:='CurrentSelect '+CurrentSelect.Name;
end;
 
 
procedure TForm1.RBClick(Sender: TObject);
begin
     If RetourArriere = True Then
     Begin
          RetourArriere:=False;
          Exit;
     End;
 
     If MessageDLG('Voulez-Vous continuer ?',mtConfirmation,[mbYes, mbNo],0) = mrNo Then
     Begin
          RetourArriere:=True;
          (sender as TAdvOfficeRadioButton).Checked:=False;
          CurrentSelect.Checked:=True;
     End;
end;
Cette solution fonctionne mais elle n'est pas très élégante et pas très pratique. Existe-t-il un autre moyen?

Merci d'avance