Delphi

beida -  
 zeus -
comment utiliser les touches de clavier pour fermer une fenete
en mode d'execution dans une application.(par exple echape)

2 réponses

  1. sebsauvage
     
    mmm... tu peux utiliser l'évènement 'OnKeyDown' (ou qqchose comme ça, je n'ai pas Delphi sous les yeux) et dans la méthode, mettre un application.terminate() pour fermer l'application.
    0
  2. zeus
     
    ce que te propose sebsauvage fonctionne mais sous certaines conditions :
    -le composant doit recevoir le focus
    -le composant doit evidemment avoir une gestionnaire d'événement OnKeyDown

    l'inconvénient est que si tu veux généraliser la procédure tu risques d'appliquer ton bout (application.terminate) de code pour chaque composant.

    voici une alternative avec fermeture par ECHAP (peu importe le composant recevant le focus) :

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    private
    //rajoute ceci
    procedure AppMessage(var msg: TMsg; var handled: boolean);
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    //rajoute ceci
    procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
    begin

    case msg.message of
    WM_KEYDOWN:
    begin
    if (Msg.wParam = 27) then //touche ECHAP
    application.Terminate;
    end;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    //et enfin rajoute ceci
    Application.OnMessage := AppMessage;
    end;

    end.

    @+
    0