![]() |
Tasen sperren mit key /Wie gebe ich entf/del frei?
Hallo,
im Moment wende ich folgenden Befehl an:
Delphi-Quellcode:
Der Code funktioniert auch wunderbar, nun rätsle ich gerad rum, wie ich die entf & del Tate frei gebe?
if not (key in ['0'..'9']) then key:=#0;
mfg Thomas |
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; |
Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
Delphi-Quellcode:
Fehlermeldung: inkompatiple Typen: 'Char' und 'Integer'
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; |
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.
|
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? |
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)
|
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. |
Re: Tasen sperren mit key /Wie gebe ich entf/del frei?
@Robert Marquardt
Zitat:
Der letzte Beitrag erklärt aber dann sehr schön die Vorgehensweise von Delphi. Gruß Hawkeye |
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:
|
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:
Da schaffe ich es nicht die restlichen tasten abzufangen. (Key:=#0 funktioniert auch nich)
procedure TForm2.AbRunde137KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if not (key = 48) then key:=0; end; Hier schaffe ichs alle Anderen Tasten abzufangen.
Delphi-Quellcode:
Allerdings bekomme ich hier die Entf Taste nicht freigeschalten
procedure TForm2.NurGanzezahlen(Sender: TObject; var Key: Char);
begin if not (key in ['0'..'9']) then key:=#0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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 by Thomas Breitkreuz