Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FormClose mit ESC bzw. onKeypress (https://www.delphipraxis.net/203375-formclose-mit-esc-bzw-onkeypress.html)

HCB 12. Feb 2020 09:15

FormClose mit ESC bzw. onKeypress
 
Hallo und HILFE!!!

Ich verzweifle mittlerweilen: Ich habe Delphi XE2 und habe das Problem, dass die Ereignisse onKeypress, onKeyDown und onKeyup nicht stattfinden, sprich die werden erst gar nicht angesprochen. In meiner alten Delphi Version 6 auf einem anderen Rechner funktioniert es problemlos.

KeyPreview ist natürlich auf true gesetzt und unter Form1.keypress ist folgendes eingetragen: if key = #27 then close;
Eigentlich total simpel und funktioniert auch in Delphi 6.

Was zum Henker ist da falsch, wenn ich das selbe unter XE2 versuche. Ich habe mal bei onKeypress, onKeyDown und onKeyup ein ShowMessage eingebaut aber bei keinem Tastendruck wird die Message angezeigt.

Weiß nicht mehr weiter, vielleicht liegt es an XE2? Hat jemand XE2 und kan mal testen ob das bei ihm funktioniert?
Für alle Tipps und Hinweise wäre ich sehr dankbar.

Harry

hsg 12. Feb 2020 09:18

AW: FormClose mit ESC bzw. onKeypress
 
Moin,

dem Form auch die Eventhandler zugewiesen?

KodeZwerg 12. Feb 2020 09:19

AW: FormClose mit ESC bzw. onKeypress
 
So sollte es eigentlich universell für alle Delphi's funktionieren.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.KeyPreview := True;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if key = #27 then
// oder if key = chr(27) then
    Close;
end;

Daniel 12. Feb 2020 09:26

AW: FormClose mit ESC bzw. onKeypress
 
Delphi-Quellcode:
Form1.KeyPreview := True;
Das knallt furchtbar, wenn Du die Instanz des Formulares jemals an etwas anderes bindest als an die Variable Form1. In diesem Kontext - im FormCreate - reicht es, wenn Du nur "KeyPreview := True;" schreibst. Und an sich spricht auch nichts dagegen, diesen Wert gleich im Objekt-Inspektor zu setzen.

KodeZwerg 12. Feb 2020 09:32

AW: FormClose mit ESC bzw. onKeypress
 
Danke für verbesserung samt erläuterung!

Daniel 12. Feb 2020 09:36

AW: FormClose mit ESC bzw. onKeypress
 
Nö.
Im FormKeyPress bekommst Du einen Character - und das ist im Falle von ESC die #27. KeyUp bzw. KeyDown nutzen die numerischen Konstanten, die Du nennst.

KodeZwerg 12. Feb 2020 09:39

AW: FormClose mit ESC bzw. onKeypress
 
admin war schneller, bitte löschen :)

HCB 12. Feb 2020 09:46

AW: FormClose mit ESC bzw. onKeypress
 
Wow, so schnelle Reaktion hätte ich jetzt nicht erwartet. Danke!

1. Erzeuge neue Anwendung (Form1).
2. Setze Eigenschaft KeyPreview auf true
3. Trage im Ereignis onKeypress folgendes ein: if key = #27 then close;
4. Starte das programm und drücke ESC: Das programm wird beendet.

Wie gesagt, easy und funktioniert unter Delphi 6 ABER EBEN NICHT UNTER MEINEM XE2!!!
Deswegen war die Frage, ob jemand wenn er XE2 hat, das ausprobiert um sicher zu gehen ob es an dieser Version liegt oder woanders.

Alles sehr kurios.

ghubi01 12. Feb 2020 10:19

AW: FormClose mit ESC bzw. onKeypress
 
Hallo,

ich habe das gerade mal mit XE2 ausprobiert. Funktioniert einwandfrei.
Die Anwendung muss aber den Focus haben, sonst gehts nicht.

hoika 12. Feb 2020 10:21

AW: FormClose mit ESC bzw. onKeypress
 
Hallo,
in XE klappt alles, XE2 habe ich nicht.

Ich würde trotzdem mal hier die DFM posten,
vielleicht hast du eine murklige IDE-Erweiterung installiert, die querschießt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz