Ho attivato il KeyPreview sul Form, e ho creato nel FormKeyUp il codice:
if MyTxt.Focused then
begin
if not (Char(Key) in [A..Z]) then
Key:=0;
end;
Non trovo come far annullare la pressione del tasto, se metto Key:=0; il carattere lo scrive lo stesso.
Prova ad intervenire prima, sul down.
procedure WMKeyDown(var Message: TLMKeyDown); message LM_KEYDOWN;
procedure TForm1.WMKeyDown(var Message: TLMKeyDown);
begin
....
Message.Result:=0;
...
Result := 0 implica (Delphi) che il mesaggio è stato processato, quindi non dovrebbe essere propagato oltre.
Non so se la LCL si comporta nella stessa maniera ;) Fammi sapere.
PS:
In genere basta mettere Message.CharCode:=0;
Lo so, nel momento in cui vai a testare gli SHIFT, CTRL, ALT è una rottura di balle ;)