![]() |
Wie fange ich ESC ab?
Guten Tag allerseits
In meinem Program verwende ich die Zeilen aus ![]() Nur: in meiner Form habe ich auch ein FormKeyPress, wo ich mit ESC die Application schliesse. Wenn ich also in meiner Schleife auf PAUSE drücke, dann kann ich aus der Schleife ausbrechen. Wenn ich aber ESC drücke (Edit: bei ausgeklammerten MessageDlg), schliesst das Programm. Ich habe dann mal so auf gut Glück in die Funktion EscPressed ein
Delphi-Quellcode:
mit all seinen möglichen Variationen hinzugefügt. Hat aber nichts gebracht. Sobald ich ESC drücke, schliesst das Programm.
while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) do;
Jetzt könnte ich eine globale Variable "beiEscNichtSchliessen" definieren und diese vor der Schleife auf TRUE setzen und diese dann in FormKeyPress testen. Aber ich bin sicher, dass es eine elegantere Lösung dafür geben muss. Oder? PS (als Edit): Vielleicht sollte ich erwaehnen, dass die in ![]() Und wenn ich diese Zeilen mit dem MessageDlg ausklammere, schliesst mein Programm bei einem ESC. |
Re: Wie fange ich ESC ab?
Hallo,
also wenn Du im ONKEYPRESS Ereignis abfragst
Delphi-Quellcode:
und die entsprechenden Schalter abfragst..sollte das funktionieren.
If Key =#27 then...else Key:=#0
|
Re: Wie fange ich ESC ab?
@Der Kaktus
Aber genaus das will ich vermeiden: Eine Variable, bei der ich genau weiss, dass ich nach einen halben Jahr mich frage "was war das doch nochmal?" |
Re: Wie fange ich ESC ab?
Hallo,
erstens sind genau dafür Kommentare da
Delphi-Quellcode:
und zweitens gibt es die entsprechenden
// #27 = Escape-Taste
![]()
Delphi-Quellcode:
und drittens könntest du dir diese selbst definieren, falls es keine vordefinierten Konstanten gäbe:
VK_ESCAPE
Delphi-Quellcode:
Grüße, Matze
const KEY_ESCAPE = #27;
|
Re: Wie fange ich ESC ab?
@Matze
Mit all den von Dir vorgeschlagenen Konstanten habe ich es natürlich auch schon probiert. Geht nicht. Ich habe es jetzt so gelöst, dass ich, bevor ich die Schleife betrete, KeyPreView auf FALSE setze und diese in FormKeyPress teste
Delphi-Quellcode:
Nach dem Verlassen der Schleife setze ich KeyPreView wieder auf True.
if (Key = #27) AND Form1.KeyPreview then
close; Nicht gerade der Weisheit letzter Schluss; aber man soll seine Lösüngen seinen Faehigkeiten anpassen. :) |
Re: Wie fange ich ESC ab?
Zitat:
|
Re: Wie fange ich ESC ab?
[quote="Der.Kaktus"]
Zitat:
|
Re: Wie fange ich ESC ab?
Zitat:
Schreibe doch zukünftig ohne Nachfrage, was nicht geht, wie sich das äußert (Fehlermeldung, wenn ja, welche etc.) und immer den relevanten Quelltext. Du möchtest hier die Hilfe, dann bemühe dich da etwas und mach es uns so leicht wie möglich. ;) Edit: Im OnKeyDown-Ereignis funktioniert das mit aktiviertem KeyPreview bei mir ohne Probleme:
Delphi-Quellcode:
Grüße
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = VK_ESCAPE then begin ShowMessage('Esc'); end else Key := 0; end; |
Re: Wie fange ich ESC ab?
@Matze
Ich habe ja keine Fehlermeldung oder sowas. Und ich weiss ehrlich gesagt nicht, wie ich mein Problem haette besser beschreiben sollen. In der Zwischenzeit habe ich das ganze das Ganze auf eine simple Form zusammengekürzt. Und hier klappt alles. KeyPreview true oder false spielt - wie bei dir - keine Rolle. Aber in meiner Application klappt es nicht. Sehe aber nirgends einen Unterschied. Ich melde mich wieder ... |
Re: Wie fange ich ESC ab?
Zitat:
..Roter Kasten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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