Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Fabio - Maggio 01, 2012, 07:35:32 pm

Titolo: Intercettare il KeyUp e annullare una pressione tasto
Inserito da: Fabio - Maggio 01, 2012, 07:35:32 pm
Ho attivato il KeyPreview sul Form, e ho creato nel FormKeyUp il codice:

Codice: [Seleziona]
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.
Titolo: Re:Intercettare il KeyUp e annullare una pressione tasto
Inserito da: sergio - Maggio 01, 2012, 07:43:40 pm
Ciao, hai provato a mettere key:= '' ;
la tiro li , vedi se funziona , ciao Sergio.
Titolo: Re:Intercettare il KeyUp e annullare una pressione tasto
Inserito da: Fabio - Maggio 01, 2012, 09:39:46 pm
Key è di tipo Word non String
Titolo: Re:Intercettare il KeyUp e annullare una pressione tasto
Inserito da: Stilgar - Maggio 01, 2012, 09:47:45 pm
Prova ad intervenire prima, sul down.
Codice: [Seleziona]
procedure WMKeyDown(var Message: TLMKeyDown); message LM_KEYDOWN;

Codice: [Seleziona]
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 ;)

Titolo: Re:Intercettare il KeyUp e annullare una pressione tasto
Inserito da: Fabio - Maggio 02, 2012, 10:42:35 am
Andando a intercettare il KeyDown invece del KeyUp il Key:=0 annulla la pressione del tasto, grazie.