Delphi – Premeštanje fokusa preko tastera „Enter“

Uobičajeno je da se kroz forme aplikacija krećemo pritiskom na taster „Tab“, šta ako ovo želimo da promenimo i da fokus prebacujemo pritiskom na taster „Enter“? Sa druge strane podrazumevano je da, ako na nekoj formi pritisnemo Enter, simuliraće se pritisak na default taster. Ovo podrazumevano ponašanje možemo promeniti i to tako što izvršimo preraspodelu kontrole sa tastature, a to se radi preko osobine „KeyPreview“ koju postavljamo na „True“. Ovim smo regulisali da naša forma, na svaki pritisak na taster, na tastaturi pozove „handler“ za događaj „OnKeyPress„. Ovo ćemo dobiti ako sledeći kod ubacimo u „FormKeyPress“.

BEGIN if Key = #13 then if Not (ActiveControl is TDBGrid) then BEGIN Key := #0 ; Perform (WM_NEXTDLGCTL, 0, 0) ; END else with TDBGrid (ActiveControl) do if selecedtindex (FieldCount – 1) then selecedtindex := selecedtindex + 1 else selecedtindex := 0 ; END;

Šta radi ovaj programski kod? U prvom delu, u slučaju da je pritisnut taster „Enter“ (#13), a aktivna kontrola (ActiveControl) nije TDBGrid, poništiće se taster i poslaće se poruka „WM_NEXTDLGCTL“. Ova poruka će kroz kontrolu na formi preći na Windows i izazvaće aktiviranje sledeće kontrole (kao da je pritisnuto „Tab“). Drugi deo koda obrađuje slučaj kada je pritisnuto „Enter“, a fokus se nalazi na TDBGrid kontroli. Sa ovim kodom izazivamo prelaženje sa jednog reda na drugi u kontroli za prikaz baze podataka. Ovde imamo dva podatka: FieldCount i SelectedIndex. Prvi podatak je broj polja u mreži (grid-u), a drugi indeks trenutnog polja. U slučaju da se nalazimo na poslednjem polju, prebacijemo se na prvo, a inače vršimo pomeraj za po jedno polje.

Pratite Krstaricu na www.krstarica.com