Mam takie pytanie odnośnie VBA. Jeżeli jest załóżmy taki oto błąd z polem tekstowym tbWartość :
If Err.Number <> 0 Then
MsgBox "Niewłaściwa wartość!"
tbWartość.SetFocus
Exit Sub
End If
On Error GoTo 0
I wtedy pole tekstowe otrzymuje fokus. Myślałem na początku, że jest to wyczyszczenie pola, ale to nie to. Czym jest tutaj ten fokus - pytam z czystej ciekawości :?:
Co prawda nie programowałem w VBA, ale “fokus” powinien oznaczać, że jakaś kontrolka formularza (w twoim przypadku pole tekstowe) staje się “aktywna”. W twoim przypadku, dla pola tekstowego, oznacza to ni mniej ni wiecej tylko to, że pojawi się w niej kursor, jeśli przez przypadek znajdował się gdzie indziej, i ta kontrolka będzie przejmowała informacje przychodzące z klawiatury.
Można fokus ustawić np. na przycisku (przynajmniej tak jest w bibliotece VCL borlanda), wtedy naciśnięcie enter powoduje akcję identyczną, jakbyś kliknął w ten przycisk. Ogólnie: proponuję ci pomanewrować klawiszem TAB na jakimś dowolnym formularzu i zobaczysz, jak przenosi się “fokus” z kontrolki na kontrolkę.
A tak masz rację - gdy tego nie ma fokusa, w tbWartość , kiedy wystąpi w niej błąd, nie ma kursora. Natomiast gdy jest fokus, kursor automatycznie przenosi się do tej komórki w której wystąpił błąd