Bonjour, j'ai un problème avec les codes suivant:
Je crée la fiche de message:Ensuite je fait ouvrir (pour le test) le message avec un bouton
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 function DefMessageDlg(const ACaption: string; const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; DefButton: Integer; HelpCtx: Longint): Integer; var i: Integer; btn: TButton; begin with CreateMessageDialog(Msg, DlgType, Buttons) do try Caption := aCaption; HelpContext := HelpCtx; for i := 0 to ComponentCount - 1 do begin if (Components[i] is TButton) then begin btn := TButton(Components[i]); btn.Default := btn.ModalResult = DefButton; if btn.Default then ActiveControl := Btn; end; end; Result := ShowModal; finally Free; end; end;
Si je clique sur le bouton 'Oui' (1é dans les if) c'est OK;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 procedure TForm1.Button1Click(Sender: TObject); begin if DefMessageDlg('Mon Titre','Mon Message',mtInformation,mbYesNoCancel,mrNo,0) = mrYes then ShowMessage('Oui'); if DefMessageDlg('Mon Titre','Mon Message',mtInformation,mbYesNoCancel,mrNo,0) = mrNo then ShowMessage('No'); if DefMessageDlg('Mon Titre','Mon Message',mtInformation,mbYesNoCancel,mrNo,0) = mrCancel then ShowMessage('Canceller'); end;
Si je clique sur le bouton 'Non' (2è dans les if) cela nécessite 2 clicks
Bouton 'Annuler' 3 clicks.
Si j'inverse les if le nombre de click change suivant leur nouvelle position.
Il est évident que le programme s'arrête sur chaque bouton pour en vérifier l'égalité mais je voudrais que l'action se fasse au premier click de souris sur n'importe lequel des 3 boutons.
Merci
Duan
Partager