But: Permettre aux usagers de déplacer le focus en tapant ENTER plutôt qu'en tapant TAB. Pour ce faire, j'appelle la méthode TWinControl.SelectNext
En design-time, si j'appelle SelectNext dans un event-handler de chacun des controls TEdit, le focus change tel que désiré:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
...
SelectNext(Sender as TWinControl, True, True);
Cependant, pour encapsuler ce code dans un composant, je tente d'écrire un composant TDLEdit qui hérite de TEdit et dans lequel j'ai surchargé l'événement KeyPress. Dans cette méthode, j'appelle SelectNext, mais le focus ne change pas:
procedure TDLEdit.KeyPress(var Key: Char);
...
SelectNext(self as TWinControl, True, True);
Pourquoi la méthode SelectNext fonctionne-t-elle quand on l’appelle à partir d’un event-handler et qu’elle ne fonctionne pas quand on l’appelle à partir d’un composant.
Je soupçonne que cela est attribuable au fait que dans le premier cas, self réfère à une instance de TForm1, tandis que dans le second cas, self réfère à une instance de TEdit.
Toute aide serait grandement appréciée. Merci beaucoup !!!
Partager