Recunoașterea intrărilor de taste

Recunoașterea intrărilor de taste

Această carte vă va ajuta să stăpâniți mediul de dezvoltare integrat VBA și să învățați cum să programați în VBA folosind obiecte, proprietăți, metode și evenimente. Metodele de programare discutate sunt ilustrate prin exemple care pot fi testate imediat în practică. Puteți aplica aceste cunoștințe atât pentru crearea și îmbunătățirea aplicațiilor de birou populare, inclusiv pentru aplicațiile Office XP, cât și pentru crearea propriilor aplicații.







Cartea este concepută pentru cei care vor să învețe rapid și fără prea mult efort să învețe cum să programeze pentru Windows utilizând VBA.

Carte: VBA pentru Dummies

Recunoașterea intrărilor de taste

Recunoașterea intrărilor de taste

Utilizați evenimentele KeyPress, KeyDown și KeyUp pentru a răspunde la apăsările de taste ale utilizatorului. Evenimentul KeyPress este convenabil pentru recunoașterea cheilor cu caractere obișnuite "tipărite" (litere, numere, punctuație) când trebuie să procesați informațiile introduse într-un câmp text sau într-o casetă combo. Cu acest eveniment, multe dintre combinațiile de tip , și o cheie . Puțin mai târziu voi arăta cum să verificați sau să schimbați caracterul tastat utilizând procedura de procesare a evenimentelor KeyPress.

Evenimentele KeyDown și KeyUp, pe de altă parte, recunosc aproape orice combinație de taste pe care o trimite, inclusiv freaks cum ar fi . Este mai dificil să lucrați cu aceste evenimente decât cu KeyPress, dar vă permit să utilizați un set mai larg de comenzi rapide de la tastatură. De exemplu, puteți crea o procedură pentru procesarea evenimentului KeyDown, care permite utilizarea combinațiilor și > respectiv, reduceți sau măriți valoarea barei de derulare, de exemplu, cu 10.

În Capitolul 10, am discutat tehnicile de bază pentru a vă asigura că utilizatorul a introdus informațiile corecte în formular. Aici vom discuta mai multe tehnici.

În cazul câmpurilor de text și al casetelor combo, unele caractere pentru datele de intrare nu sunt permise. Utilizați procedura de tratare a evenimentelor KeyPress pentru a elimina caracterele nevalide de pe ecran atunci când le tipăriți de utilizator. Următorul cod de program vă permite să introduceți numai litere și numere:

Private Sub txtSerial Număr_KeyPress (ByVal KeyAscii _

"Întregul bloc este o condiție:

Dacă Chr (KeyAscii) <"0" Or _

(Chr (KeyAscii)> "9" Și Chr (KeyAscii) <"A") Or _

(Chr (KeyAscii)> "Z" și Chr (KeyAscii) <"a") Or _

Chr (KeyAscii)> "z" Apoi







MsgBox "Caracterul nevalid!"

KeyAscii = 0 'caracterul aruncat

Da, recunosc că condiția folosită aici sa dovedit a fi destul de lungă, dar nu funcționează. Imediat ce declarația If. Apoi, acesta găsește un caracter nevalid, este afișat un mesaj despre el. Apoi vine operatorul KeyAscii = 0; KeyAscii este argumentul pentru procedura de procesare a evenimentului KeyPress, deci este folosit ca variabilă locală în această procedură. Modificarea valorii acesteia modifică codul caracterului trecut în câmpul de text. Și din moment ce câmpul de text în sine nu acceptă un caracter care are codul 0, un caracter invalid introdus de utilizator va dispărea fără urmă.

Schimbarea valorii argumentului KeyAscii vă permite să modificați datele introduse incorect în cea corectă. De exemplu, următoarea procedură de procesare a unui eveniment poate fi utilizată pentru afișarea și stocarea textului introdus de utilizator sub formă de text scrise cu majuscule:

Private Sub txtSerial Număr_KeyPress (ByVal KeyAscii _

Operatorul care efectuează conversia a necesitat utilizarea a trei funcții imbricate una în cealaltă. Deoarece KeyAscii este un cod numeric caracter, mai întâi necesar pentru a converti codul într-un șir de caractere prin intermediul funcției Cro, traduce apoi un șir la majuscule folosind UCASE și în final convertiți din nou șir la un întreg folosind Asc.

Dacă doriți să verificați din nou valoarea unui control cu ​​fiecare schimbare, creați o procedură de procesare a evenimentelor sau folosiți-o pe cea de la subsecțiunea anterioară. Dar, uneori, este preferabil să amânați verificarea datelor până când utilizatorul completează complet intrarea. Unii vă vor fi recunoscători pentru oportunitatea, fără ajutor extern, de a corecta datele pe care le introduc înainte de a transfera aceste date în program pentru verificare - o percep ca pe o recunoaștere indirectă a abilităților lor mentale.

Amânați verificarea are sens, de asemenea, dacă durează mult timp. Dacă trebuie să comparați datele introduse cu date dintr-o bază de date sau date de pe Internet, probabil că nu doriți să forțați utilizatorul să aștepte în timp ce programul caută date de comparație de fiecare dată când tasta este apăsată și fiecare clic al butonului mouse-ului.

Pentru a testa valoarea unui control după ce utilizatorul termină complet tastând, creați o procedură pentru procesarea evenimentului BeforeUpDate. Aceste evenimente apar atunci când utilizatorul face clic pe un alt control, apasă pe sau apasă o combinație de taste atribuită altui control. VBA înregistrează evenimentul BeforeUpDate chiar înainte de a părăsi acest control, apoi puteți anula actualizarea datelor și rămâneți la locul lor, determinând utilizatorul să remedieze eroarea. Următorul exemplu arată modul de utilizare a instrucțiunii Anulare:

Private Sub txtSerial Number_Change ()

Dacă Len (t xt Serial Number.Value)> 5 Apoi

MsgBox "Prea multe caractere, vă rugăm să încercați din nou."

Uneori are sens să amânați validarea datelor de control până când utilizatorul face clic pe butonul OK care închide formularul. Acest lucru trebuie făcut în cazul în care criteriile de validare utilizează valorile mai multor controale în formular. Dacă ați selectat acest tip de verificare, plasați codul de program corespunzător în procedura de procesare a evenimentului Click de pe butonul OK. Să presupunem că dezvoltați o formă care să permită utilizatorului să introducă datele pentru evenimente viitoare importante. Formularul conține o listă în care utilizatorul poate specifica cât de mult timp înainte de rechemare a evenimentului. Dacă utilizatorul planifică o întâlnire pentru ziua de mâine, dar solicită să i se amintească despre aceasta cu două zile înainte, puteți raporta interdicția de a introduce astfel de date după ce utilizatorul dă clic pe butonul OK. În acest fel, nu trebuie să solicitați utilizatorului să introducă date în comenzi într-o anumită ordine pentru a evita apariția mesajelor de eroare.







Articole similare

Trimiteți-le prietenilor: