Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Char(VK_DELETE) (https://www.delphipraxis.net/106335-char-vk_delete.html)

Nils_13 9. Jan 2008 11:20


Char(VK_DELETE)
 
Hi,

ich kann Backspace drücken, aber Entf nicht. Warum ?
Delphi-Quellcode:
procedure TfrmCreate.eKMKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', '.', Char(VK_BACK), Char(VK_DELETE)]) then
    Key := #0;
end;

iKilledKenny 9. Jan 2008 11:34

Re: Char(VK_DELETE)
 
VK_BACK = 8 = ASCII 8 = Backspace
VK_DELETE = 46 != ASCII 127 = Delete

Heisst im Klartext nimm die ASCII-Codes anstelle der VK-Codes.

Delphi-Quellcode:
procedure TfrmCreate.eKMKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', '.', Char(8), Char(127)]) then
    Key := #0;
end;

Muetze1 9. Jan 2008 11:47

Re: Char(VK_DELETE)
 
Und um sich den unnötigen Typecast zu sparen so schreiben (macht ihr ja beim zurücksetzen auch so...):

Delphi-Quellcode:
procedure TfrmCreate.eKMKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', '.', #8, #127]) then
    Key := #0;
end;

Nils_13 9. Jan 2008 12:01

Re: Char(VK_DELETE)
 
Hm, ich kann Entf immer noch nicht benutzen.

Ghostwalker 9. Jan 2008 12:07

Re: Char(VK_DELETE)
 
Debug doch einfach mal rein und schau dir an, ob er überhaupt bei "entf" in die Methode reinspringt und wenn ja, welchen char-code zu bekommst :)

Nils_13 9. Jan 2008 12:09

Re: Char(VK_DELETE)
 
Hm, bei Entf springt er nicht in OnKeyPress, ansonsten schon.

Ghostwalker 9. Jan 2008 12:13

Re: Char(VK_DELETE)
 
Tja, dann isses wohl logisch das Entf nicht funktionieren kann ;)

Probier stattdessen mal onKeyDown :)

Nils_13 9. Jan 2008 12:16

Re: Char(VK_DELETE)
 
Wenn er bei Entf nicht reinspringt müsste es doch funktionieren, da Key := #0 dann nicht durchgeführt wird.

Ghostwalker 9. Jan 2008 12:21

Re: Char(VK_DELETE)
 
Was erwartest du denn, das er tut, wenn du Entf drückst ?

Nils_13 9. Jan 2008 12:25

Re: Char(VK_DELETE)
 
Ich erwarte dass er das normale Ereignis durchführt, also das Zeichen hinter dem Caret (fälschlicherweise auch Cursor genannt) löscht.

Ghostwalker 9. Jan 2008 12:26

Re: Char(VK_DELETE)
 
Dann würd ich mal sagen, ist da ein Bug in der von dir benutzen Komponente :) oder es fehlt eine Einstellung.

Nils_13 9. Jan 2008 12:28

Re: Char(VK_DELETE)
 
Du hast Recht. Die Editkomponente von Delphi7 ist fehlerhaft. Danke für den Hinweis. Ich denke das war dann so langsam der endgültige Todestoß für Delphi bei mir. Ich muss eh Lazarus benutzen und solche Fehler sind mir echt zu hoch.

Edit: Nur in diesem Projekt.... Da stimmt was nicht.

Ghostwalker 9. Jan 2008 12:30

Re: Char(VK_DELETE)
 
Dann viel Spaß mit Lazarus :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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