Zitat Zitat von PX Beitrag anzeigen
Habe es noch nicht verstanden.
Code:
if not (Key in ['VK_BACK']) then
  Key := #0;
So geht es nicht...
Klick mal mit gedrückter CTRL/STRG Taste auf VK_BACK und du wirst sehen es ist eine Vordefinierte const (VK_BACK = 8; in der Unit "Windows"). Aber Key ist wie du oben siehst ein Char (oder ein Byte im Grunde, da es ASCII Chars bis max. Nr. 255 sind. Also schreibst du entweder #8 (Das sagt Delphi du möchstest einen Char mit dem Wert 8) oder du wandelst deine Konstanze (im Grunde ja auch 8) in ein Char um. Dafür gibt es den Befehl Chr().

Code:
procedure TXYZ.OnKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Chr(VK_Back) then
    // Whatever...
end;
OnKeyPress liefert eben nur Char-Werte. OnKeyUp/OnKeyDown liefern dir den Wert als "Word" (= 4Byte Integer also ein normales Integer in Delphi). Hier würde die Umwandlung ausbleiben. Der Unterschied ist die Auslösung der Ereignisse.

OnKeyDown wird ausgelöst wenn der Nutzer die Taste runterdrückt.
OnKeyUp wird ausgelöst wenn der Nutzer die Taste loslässt.
OnKeyPress wird ausgelöst wenn der Nutzer die Taste runterdrückt und zusätzlich nach einiger Zeit wieder, ähnlich wie wenn man in einem Memo "A" gedrückt hält. Zuerst kommt ein "A", wie gewollt und nach einigen Millisekunden viele "A"s mehr und zwar diesmal recht schnell hintereinander, also mit weniger Abstand als das erste und das zweite.