Modaldialog reagiert nicht auf enter / esc

8

Ich habe einen Modaldialog mit einem OK und einem Abbrechen Knopf. Für OK setze ich die Eigenschaft Default auf True und für die Schaltfläche Cancel die Eigenschaft Cancel . ModalResult wird auf mrOK und mrCancel gesetzt.

Wenn Sie jedoch weder die Eingabetaste noch die Esc -Taste auf meiner Tastatur drücken, wird der Dialog geschlossen. Was habe ich hier vermisst?

bearbeiten
Ich habe eine kleine Testanwendung im verdächtigen Dialog auf meiner Website veröffentlicht. IDE ist RAD Studio XE3.

    
stevenvh 05.07.2014, 07:42
quelle

2 Antworten

5

Für die Aufzeichnung sollte dies funktionieren. Es scheint jedoch, dass TSpinEdit einen Fehler hat. Da TSpinEdit ein Beispiel ist (Vcl.Samples.Spin.pas, beachten Sie die "Samples"), können Sie dies selbst beheben.

Fügen Sie zu TSpinEdit die folgende Methodendeklaration hinzu, die nur auf WMCut folgt:

%Vor%

Vervollständige die Klasse (Umschalt + Strg + C) und füge den folgenden Code zu WMGetDlgCode hinzu:

%Vor%

Dadurch wird VCL mitgeteilt, dass das Bearbeitungssteuerelement die Enter- und Escape-Schlüssel (VK_ENTER, VK_ESCAPE) nicht verarbeiten soll. Da die Schlüssel nicht verarbeitet werden, werden sie an die Schaltflächen weitergeleitet, die dann basierend auf ihren Einstellungen (Standard & amp; Cancel) aufgerufen werden.

Bitte melden Sie dies unter Quality Central

    
Allen Bauer 05.07.2014 22:31
quelle
4

In Ihrem Beispiel können Sie sehen, dass das TSpinEdit -Steuerelement fokussiert ist und die Schlüssel erfasst.

Um das modale Formular in allen Fällen zu schließen, setzen Sie das Formular KeyPreview auf true und fügen Sie dieses in das Ereignis OnKeyPress ein:

%Vor%     
LU RD 05.07.2014 08:16
quelle

Tags und Links