Messagedlg avec choix du bouton qui a le focus

Description

tout est dans le titre, il suffit de remplacer messagedlg() par msgdlg()
le parametre DefaultBtn est 'No' pour le bouton mbNo par exemple.

Source / Exemple :


unit Dialogs2;

{$R-,T-,H+,X+}

interface

{$IFDEF LINUX}
uses WinUtils, Windows, Messages, SysUtils, CommDlg,   Dialogs,
  Printers, Classes, Graphics, Controls, Forms, StdCtrls;
{$ENDIF}
{$IFDEF MSWINDOWS}
uses Windows, Messages, SysUtils, CommDlg,  Dialogs,
  Printers, Classes, Graphics, Controls, Forms, StdCtrls;
{$ENDIF}

{ Msgdialog }

function MsgDlg(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint;DefaultBtn: string): Integer;
function MsgDlgPos(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;DefaultBtn: string): Integer;
function MsgDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: string;DefaultBtn: string): Integer;

implementation

uses
  ExtCtrls, Consts, Dlgs, Math;

{ Message dialog }

function MsgDlg(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint;DefaultBtn: string): Integer;
begin
  Result := MsgDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, '',DefaultBtn);
end;

function MsgDlgPos(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;DefaultBtn: string): Integer;
begin
  Result := MsgDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, '',DefaultBtn);
end;

function MsgDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: string;DefaultBtn: string): Integer;
begin
  with CreateMessageDialog(Msg, DlgType, Buttons) do
    try
      HelpContext := HelpCtx;
      HelpFile := HelpFileName;
      if X >= 0 then Left := X;
      if Y >= 0 then Top := Y;
      if (Y < 0) and (X < 0) then Position := poScreenCenter;
      TButton(FindComponent(DefaultBtn)).TabOrder := 0;
      Result := ShowModal;
      
    finally
      Free;
    end;
end;

end.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.