Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnKeyPress verarbeitet ENTER nicht an (https://www.delphipraxis.net/184539-onkeypress-verarbeitet-enter-nicht.html)

Sugar 3. Apr 2015 11:19

Delphi-Version: 7

OnKeyPress verarbeitet ENTER nicht an
 
Hallo,

ich habe wieder mal was wundersames...
Ich reagiere auf die Tastatureingaben in einm TEditFeld. Im OnKeyPress-ereignis habe ich folgendes eingetragen um nur die gewünschten Tasten zur Eingabe zuzulassen.

procedure THauptForm.CalcEdit1KeyPress(Sender: TObject; var Key: Char);
Begin
If Not (Key IN ['0'..'9',',','-','+','*','/',#8,#27,#13]) then
begin
Key := #0;
end;
.
.
.
End;

Die ENTER-Taste behandele in etwas später im Code dieses Ereignisprozedur. Besser ich würde gern....
Denn betätige ich in dem Eingabefeld die Enter Taste, dann tritt dieses Ereignis gar nicht ein.

Es gibt keine weiteren Ereignisse die ich von dem Feldverarbeite, KeyPreview der Form ist auf True (aufgrund dessen, dass ich dort auch auf andere Tastatureingaben reagiere).. Ich stehe vor einem Rätsel...

jaenicke 3. Apr 2015 11:33

AW: OnKeyPress verarbeitet ENTER nicht an
 
Das kann ich nicht reproduzieren, weder mit Delphi 7 noch mit XE7...

Hast du vielleicht ein kleines Testprojekt, das du hier anhängen kannst?

himitsu 3. Apr 2015 12:21

AW: OnKeyPress verarbeitet ENTER nicht an
 
OnKeyDown/OnKeyUp ?

PS: Rechtsklick und Einfügen, oder Strg+V und schon kann man alles einfügen, was mann will.
Es gibt hier aber auch massig Threads, wo erklärt wird, wie Andere das machen.

Popov 3. Apr 2015 12:56

AW: OnKeyPress verarbeitet ENTER nicht an
 
@Sugar

Ist schon länger her wo ich das selbst genutzt habe, ist aber soweit ich mich erinnern kann normal. Eines von beiden, OnKeyPress oder OnKeyDown reagierte nicht auf Enter. Ich hab es damals genauer untersucht, es war normal. Ich weiß aber nicht mehr warum.

jaenicke 3. Apr 2015 13:07

AW: OnKeyPress verarbeitet ENTER nicht an
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also bei mir funktioniert OnKeyPress problemlos, genau wie OnKeyDown und OnKeyUp, sowohl mit Delphi 7 als auch XE7...

// EDIT:
Hier ein Screenshot, falls es jemand nicht glauben möchte:

Anhang 42844

// EDIT2:
Ach, ich weiß warum es nicht geht vermute ich...
Ich rate einmal, dass du Key in der Ereignisbehandlung im Formular auch auf das Nullzeichen setzt, oder? Wenn du das tust, kommt der Tastendruck logischerweise auch nicht mehr im Editfeld an, du brichst ihn ja ab...

Popov 3. Apr 2015 14:06

AW: OnKeyPress verarbeitet ENTER nicht an
 
Stimmt, kann ich bestätigen. Ist aber, wie oben erwähnt, schon etwas länger her. Muss was anderes gewesen sein.
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
    ShowMessage('Schöne Grüße von OnKeyDown');
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Chr(VK_RETURN) then
    ShowMessage('Schöne Grüße von OnKeyPress');
end;

Sugar 3. Apr 2015 14:10

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von jaenicke (Beitrag 1296069)
// EDIT2:
Ach, ich weiß warum es nicht geht vermute ich...
Ich rate einmal, dass du Key in der Ereignisbehandlung im Formular auch auf das Nullzeichen setzt, oder? Wenn du das tust, kommt der Tastendruck logischerweise auch nicht mehr im Editfeld an, du brichst ihn ja ab...

Ich frage nur an zwei Stellen die Tastatur ab. Einmal in "FORMKEYDOWN" des Formulares. Dort habe ich folgendes eingefügt:
if key = 13 then showmessage('ENTER');

NULL Reaktion. Alle anderen Tasten werden sauber behandelt...

Sugar 3. Apr 2015 14:12

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von Popov (Beitrag 1296080)
Stimmt, kann ich bestätigen. Ist aber, wie oben erwähnt, schon etwas länger her. Muss was anderes gewesen sein.
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
    ShowMessage('Schöne Grüße von OnKeyDown');
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Chr(VK_RETURN) then
    ShowMessage('Schöne Grüße von OnKeyPress');
end;

Auch so gibt es keine Reaktion in der Routine....

Popov 3. Apr 2015 14:21

AW: OnKeyPress verarbeitet ENTER nicht an
 
Das funktioniert aber:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  If Not (Key IN ['0'..'9',',','-','+','*','/',#8,#27,#13]) then
  begin
    Key := #0;
  end;

  if Key = Chr(VK_RETURN) then
  begin
    Key := #0;
    ShowMessage('Schöne Grüße von OnKeyPress');
  end;
end;

Sugar 3. Apr 2015 14:25

AW: OnKeyPress verarbeitet ENTER nicht an
 
Zitat:

Zitat von Popov (Beitrag 1296085)
Das funktioniert aber:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  If Not (Key IN ['0'..'9',',','-','+','*','/',#8,#27,#13]) then
  begin
    Key := #0;
  end;

  if Key = Chr(VK_RETURN) then
  begin
    Key := #0;
    ShowMessage('Schöne Grüße von OnKeyPress');
  end;
end;

Ich weiß, nur komischerweise in diesem einen Projekt nicht!

Ich habe jetzt alles rausgeschmissen was nicht nativ Delphi 7 ist. Immer noch das gleiche Ergbebnis. Die Enter-Tase wird weder von den Komponenten noch von der Form ausgewertet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.
Seite 1 von 3  1 23      

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