AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie fange ich ESC ab?

Ein Thema von mkmk · begonnen am 7. Dez 2008 · letzter Beitrag vom 9. Dez 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
mkmk

Registriert seit: 2. Dez 2008
Ort: Zürich
42 Beiträge
 
#1

Wie fange ich ESC ab?

  Alt 7. Dez 2008, 15:31
Guten Tag allerseits

In meinem Program verwende ich die Zeilen aus Schleife per Tastendruck unterbrechen
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
while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) do; mit all seinen möglichen Variationen hinzugefügt. Hat aber nichts gebracht. Sobald ich ESC drücke, schliesst das Programm.

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 Schleife per Tastendruck unterbrechen vorgesehene MessageDlg bei mir bei einem ESC nie zum Zuge kommt. Das DialogFenster flackert nur ganz kurz und verschwindet dann. Bei einem Drücken auf PAUSE hingegen funktioniert alles bestens.
Und wenn ich diese Zeilen mit dem MessageDlg ausklammere, schliesst mein Programm bei einem ESC.
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 15:45
Hallo,
also wenn Du im ONKEYPRESS Ereignis abfragst  If Key =#27 then...else Key:=#0 und die entsprechenden Schalter abfragst..sollte das funktionieren.
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
mkmk

Registriert seit: 2. Dez 2008
Ort: Zürich
42 Beiträge
 
#3

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 16:00
@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?"
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 16:03
Hallo,

erstens sind genau dafür Kommentare da

// #27 = Escape-Taste und zweitens gibt es die entsprechenden Konstanten:

VK_ESCAPE und drittens könntest du dir diese selbst definieren, falls es keine vordefinierten Konstanten gäbe:

const KEY_ESCAPE = #27; Grüße, Matze
  Mit Zitat antworten Zitat
mkmk

Registriert seit: 2. Dez 2008
Ort: Zürich
42 Beiträge
 
#5

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 16:11
@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:
   if (Key = #27) AND Form1.KeyPreview then
     close;
Nach dem Verlassen der Schleife setze ich KeyPreView wieder auf True.
Nicht gerade der Weisheit letzter Schluss; aber man soll seine Lösüngen seinen Faehigkeiten anpassen.
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 16:15
Zitat von mkmk:
@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:
   if (Key = #27) AND Form1.KeyPreview then
     close;
Nach dem Verlassen der Schleife setze ich KeyPreView wieder auf True.
Nicht gerade der Weisheit letzter Schluss; aber man soll seine Lösüngen seinen Faehigkeiten anpassen.
Gib doch mal ne Tuete Quelltext..das geht vielleicht leichter
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
mkmk

Registriert seit: 2. Dez 2008
Ort: Zürich
42 Beiträge
 
#7

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 16:23
[quote="Der.Kaktus"]
Zitat von mkmk:
@Matze

Gib doch mal ne Tuete Quelltext..das geht vielleicht leichter
Okay, ich stelle eine einfache Form zusammen. Gib mir ein paar Minuten
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 16:52
Zitat von mkmk:
Geht nicht.
Das ist auch immer so wunderbar erklärt.

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:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_ESCAPE then
  begin
    ShowMessage('Esc');
  end else
    Key := 0;
end;
Grüße
  Mit Zitat antworten Zitat
mkmk

Registriert seit: 2. Dez 2008
Ort: Zürich
42 Beiträge
 
#9

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 17:03
@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 ...
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Wie fange ich ESC ab?

  Alt 7. Dez 2008, 17:06
Zitat von mkmk:
@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 ...

..Roter Kasten
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
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