CanFocus, cela doit être une validité VCL du Focus, cela vérifie Enabled et Visible selon la documentation
Mais Visible est à True pour les TControl dans le constructor d'une TForm car la valeur est lue dans le DFM, c'est la valeur brute de conception
True à Visible c'est même la valeur par défaut pour tous TControl sauf cas spéciaux, comme la TForm où l'on il faudra attendre un Show ou ShowModal
Donc ton tu peux instancier un TEdit, il sera True pour Visible dès le début même sans Parent
A ce stade, il manque un élément crucial, le Handle !
Il ne suffit pas que Enabled et Visible soit tous à True (du TControl receveur jusqu'à son ultime Parent), il faut aussi que l'ultime Parent ait un Handle (et toute l'arborescence de TWinControl)
1 2
| if editUser.CanFocus() and editUser.HandleAllocated() then
editUSer.SetFocus(); |
tu peux aussi faire
1 2
| if editUser.CanFocus() and Self.Visible then
editUSer.SetFocus(); |
Car Visible d'une TForm est généralement à False, important pour les débutants qui utilisent les fiches créées automatiquement (en dehors du MainForm, une chose à bannir)
Partager