![]() |
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 |
AW: FormClose mit ESC bzw. onKeypress
Moin,
dem Form auch die Eventhandler zugewiesen? |
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; |
AW: FormClose mit ESC bzw. onKeypress
Delphi-Quellcode:
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.
Form1.KeyPreview := True;
|
AW: FormClose mit ESC bzw. onKeypress
Danke für verbesserung samt erläuterung!
|
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. |
AW: FormClose mit ESC bzw. onKeypress
admin war schneller, bitte löschen :)
|
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. |
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. |
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. |
AW: FormClose mit ESC bzw. onKeypress
Ok, danke dass ihr das mal mit xe getestet habt. Nun scheint es ja an meiner Delphi Konfiguration oder sonstwas zu liegen. Ich werde mal auf diesem Rechner eine andere Version von Delphi istallieren und dann nochmal probieren. Vielleicht liegt es ja an irgendendeiner Komponente die zwar installiert ist, aber nicht benutzt wird. Keine Ahnung.
Auf jedenfall nervt die ganze Fehlersuche ungemein! Eine IDE Erweiterung o.ä. hab ich nicht. Danke nochmals für eure Mühe. Harry |
AW: FormClose mit ESC bzw. onKeypress
Hallo,
zeig doch einfach mal deine DFM. Soo gross kann die doch nicht ein. |
AW: FormClose mit ESC bzw. onKeypress
Ok, ich poste heute abend die DFM von der XE Version.
Hier die funktionierende mit Delhi 6: object Form1: TForm1 Left = 192 Top = 107 Width = 1305 Height = 675 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] KeyPreview = True OldCreateOrder = False OnKeyPress = FormKeyPress PixelsPerInch = 96 TextHeight = 13 end |
AW: FormClose mit ESC bzw. onKeypress
So nun hier eben mit XE2 erstellte Form, die nicht läuft. Das weiß nur der heilige Ozzy warum nicht mal Showmessage im Ereignis OnKeyPress fuktioniert.
OnKeyPress wird also definitiv nicht ausgelöst. object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 299 ClientWidth = 635 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] KeyPreview = True OldCreateOrder = False OnKeyPress = FormKeyPress PixelsPerInch = 96 TextHeight = 13 end |
AW: FormClose mit ESC bzw. onKeypress
So nun habe ich die 10.3 Community Version installiert und siehe da: DER GLEICHE MIST! OnKeyPress wird gar nicht erst angesprochen.
Ich vermute nun, dass irgend ein Schadprogramm Zugriff auf die Tastatur nimmt, anderes kann ich mir gar nicht mehr vostellen. Habt ihr vielleicht noch irgendwelche Ideen die ich probieren kann? Danke schon mal für eure Zeit. Harry |
AW: FormClose mit ESC bzw. onKeypress
Du hast aber nicht zufällig einen Frame oder eine kranke Komponente auf der Form, welche sich Tastenereignisse vorrangig krallt?
(TWebBrowser, AdobeIrgendwas, ... oder TApplicationEvents bzw. Application.OnIrgendwas:= bis bösem Code in den Events) Aber ja, es gibt auch nette hilfreiche Programme, die eine DLL in jedes Proramm injecten, um da Ereignisse abzufangen. (Skype, ...) Ansonsten OnKeyDown/OnKeyUp statt OnKeyPress verwenden. ESC ist ja auch nicht wirklich ein Buchstabe (Char) und als Word lässt es sich auch wunderbar mit VK_ESCAPE vergleichen. |
AW: FormClose mit ESC bzw. onKeypress
So Freunde der Nacht, der Fall ist gelöst!!!
Nachdem ich mir Gedanken über das Tastaturereignis gemacht habe, hatte ich eine Idee: Probier doch mal eine andere Tastatur, nämlich die gute alte mit Kabel. Ihr wird es nicht glauben, es lag an der Funktastatur (Cherry DW5000)! Nachdem ich jetzt Maus und Tastatur mit Kabel verwende, läuft alles anstandslos. Alle Key ereignisse reagieren jetzt wieder. Danke an alle die mir helfen wollten. Jetzt brauch ich erst einmal ein Bier. Schönen Abend noch. Harry |
AW: FormClose mit ESC bzw. onKeypress
:cheers: ;)
|
AW: FormClose mit ESC bzw. onKeypress
Das ist ja mal was... bin gerade noch sprachlos aber gut das der Fehler entlarvt wurde wobei sich mir nach wie vor die Frage stellt "was zum Henker Delphi XE2 an dieser Stelle anders macht gegenüber der noch älteren Delphi Variante..... sind doch beide am selben System getestet worden... oder nicht?"
Ich nutze ebenfalls ein "Kabelloses Office gedöns" aber habe weder in alten noch aktuellen Delphis solch ein Verhalten feststellen können. Lustigerweise ist meine ausfallsicherung eine Cherry mit Kabel :P Danke jedenfalls für den Hinweis :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz