Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tasen sperren mit key /Wie gebe ich entf/del frei? (https://www.delphipraxis.net/66799-tasen-sperren-mit-key-wie-gebe-ich-entf-del-frei.html)

Hallo_Thomas 4. Apr 2006 14:16


Tasen sperren mit key /Wie gebe ich entf/del frei?
 
Hallo,
im Moment wende ich folgenden Befehl an:

Delphi-Quellcode:
 if not (key in ['0'..'9']) then key:=#0;
Der Code funktioniert auch wunderbar, nun rätsle ich gerad rum, wie ich die entf & del Tate frei gebe?


mfg Thomas

Robert Marquardt 4. Apr 2006 14:21

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
VK_INSERT und VK_DELETE
Probier mal
Delphi-Quellcode:
if not (Key in [Ord('0')..Ord('9'), VK_INSERT, VK_DELETE]) then
  Key := #0;

Hallo_Thomas 4. Apr 2006 14:25

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
Delphi-Quellcode:
procedure TForm2.NurGanzezahlen(Sender: TObject; var Key: Char);
begin
  if not (Key in [Ord('0')..Ord('9'), VK_INSERT, VK_DELETE]) then Key := #0;
end;
Fehlermeldung: inkompatiple Typen: 'Char' und 'Integer'

Luckie 4. Apr 2006 14:30

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
Nimm das KeyDown Ereignis, dort ist der Parameter ein DWORD. Desweiteren gibnt es in der CodeLib Code der auch die Bacxkspacetaste zum Beispiel berücksichtigt.

Hallo_Thomas 4. Apr 2006 14:38

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
Irgendwie versteh ichs ni, bei key Down kommt gleiche Fehlermeldung halt nur mit Word und Char.

Welches Beispiel in der Code liberay?

ichbins 4. Apr 2006 14:42

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
das Problem ist: key ist ein Char, muss aber ein integer sein. Konvertiere key einfach zuerst in einen Zahlenwert: byte(charwert) und anderstherum: char(bytewert)

Robert Marquardt 4. Apr 2006 14:44

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
OnKeyDown und OnKeyUp operieren mit virtual Keycodes und darauf war meine if-Abfrage angelegt. Dort ist Key vom Typ WORD.
OnKeyPress bekommt nur Tasten zu Gesicht, die einen ASCII-Code haben. Delete und Insert kommen dort erst garnicht an.

Das Ganze spiegelt den Messageverarbeitungsmechanismus von Windows wider.
Die Applikation bekommt per WM_KEYDOWN und WM_KEYUP Message virtuelle Keycodes zugeschickt.
Mittels TranslateMessage wird dann eine WM_CHAR Message innerhalb der Applikation erzeugt. Dabei werden eben nur ASCII-Zeichen beruecksichtigt.

Hawkeye219 4. Apr 2006 15:08

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
@Robert Marquardt

Zitat:

Zitat von Robert Marquardt
OnKeyDown und OnKeyUp operieren mit virtual Keycodes und darauf war meine if-Abfrage angelegt.

Die Abfrage schon, die abhängige Zuweisung aber nicht. :zwinker: Das erklärt vielleicht die kurzzeitige Verwirrung.
Der letzte Beitrag erklärt aber dann sehr schön die Vorgehensweise von Delphi.

Gruß Hawkeye

Robert Marquardt 4. Apr 2006 15:12

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
Ach so, dann kracht es natuerlich bei der Zuweisung von #0 das vom Typ Char ist an ein WORD :oops:

Hallo_Thomas 4. Apr 2006 20:49

Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
 
Also ich hab mal eh bissl probiert, aber irgenwie schaff ich's nich alles unter einen Hut zu bekommen.

Wenn ich sowas versuche in der Art
Delphi-Quellcode:
procedure TForm2.AbRunde137KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if not (key = 48) then key:=0;
end;
Da schaffe ich es nicht die restlichen tasten abzufangen. (Key:=#0 funktioniert auch nich)

Hier schaffe ichs alle Anderen Tasten abzufangen.
Delphi-Quellcode:
procedure TForm2.NurGanzezahlen(Sender: TObject; var Key: Char);
begin
 if not (key in ['0'..'9']) then key:=#0;
end;
Allerdings bekomme ich hier die Entf Taste nicht freigeschalten


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Seite 1 von 2  1 2      

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