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 i preko mobilne aplikacije za Android i iPhone.