Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [Delphi] onKeyPress

  1. #1

    [Delphi] onKeyPress

    Come mai l'OnKeyPress non mi trova il tasto tabulatore?
    La tua radio preferita sempre con te
    Forum home page
    - Provoca il più bravo ... morirai come uno schiavo (Hackers)
    - Non è la grana che ti spinge ma la voglia di essere UN NOME INCISO A FUOCO NELLA STORIA (Gemelli Diversi)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Il tasto TAB rientra in quei tasti speciali a cui viene delegata una funzione particolare da parte del sistema operativo.

    L'evento OnKeyPress filtra i tasti che corrispondono ad un carattere, numerico o alfanumerico che sia. Per rilevare la pressione di altri tipi di tasti, occorre intercettare gli eventi OnKeyDown e OnKeyUp, che restituiscono una word al posto di un Char.

    I codici ricevuti come parametri dai suddetti eventi possono essere confrontati con le costanti che iniziano con il prefisso VK (Virtual Key constants).

    Sulla Guida si trova anche una tabella di tali codici.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    problema inverso:
    alla pressione del tasto ENTER (#13) voglio tar si che il risultato sia un TAB (#09) come faccio?
    La tua radio preferita sempre con te
    Forum home page
    - Provoca il più bravo ... morirai come uno schiavo (Hackers)
    - Non è la grana che ti spinge ma la voglia di essere UN NOME INCISO A FUOCO NELLA STORIA (Gemelli Diversi)

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Per il tasto INVIO, ti basta intercettare l'evento OnKeyPress verificando che il tasto premuto sia proprio quello interessato (che ha codice ASCII uguale a 13):
    codice:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #13 then
      begin
        Edit2.SetFocus;
        Key := #0;
      end;
    end;
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    ok...nel caso di due edit mi va bene, 3 anche, ma quandi iniziano a diventare una decina o più, è un metodo un po da sclero, non credi?
    La tua radio preferita sempre con te
    Forum home page
    - Provoca il più bravo ... morirai come uno schiavo (Hackers)
    - Non è la grana che ti spinge ma la voglia di essere UN NOME INCISO A FUOCO NELLA STORIA (Gemelli Diversi)

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    E' decisamente da sclero...ma non posso sapere a priori con quanti controlli avrai a che fare nella tua implementazione.

    Se si tratta di 2,4,8,10 caselle di testo, la soluzione può essere applicabile, altrimenti l'unica soluzione è costruire un controllo visuale personalizzato che discenda da TCustomEdit e che "scavalchi" i metodi preposti alla gestione dei tasti premuti, richiamando il metodo FindNextControl (normalmente non visibile dall'applicazione) per posizionarsi sul controllo successivo...ma è certamente un'operazione più lunga, complessa e laboriosa di quella che ti ho proposto.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    allora faccio così...nel manuale scrivo di premere il tasto tab e che vadano a fare in

    ciao e grazie
    La tua radio preferita sempre con te
    Forum home page
    - Provoca il più bravo ... morirai come uno schiavo (Hackers)
    - Non è la grana che ti spinge ma la voglia di essere UN NOME INCISO A FUOCO NELLA STORIA (Gemelli Diversi)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.