Bonjour,
j'ai créé une application. Dans le Form, j'ai posé un Panel. Je le construit dynamiquement avec un tableau de cases. Je veux remplir les cases (avec des lettres tapées au clavier) ligne par ligne; à la fin de chaque ligne je valide ma saisie et je passe à la ligne suivante.
Le problème : après avoir rendu la main au Form, je n'arrive pas à redonner la main aux cases.
La classe qui construit le tableau est
TGame = class( TCustomControl )
et chacune des cases est :
TCase = class( TObject )
Après traitement de la validation, on a :
Quand je fait un debug pas à pas, l'ActiveControl est bien le mGame. Il semblerait que mGame ait le focus. Quand je presse sur n'importe quelle touche du clavier, je n'ai aucun événement qui se produit. Impossible de savoir où est le focus. On ne passe même pas dans la procédure sur l'événement OnKeyPress.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure TForm1.BtnValidClick(Sender: TObject); begin //Traitement du mGame mWantFocus := True ; mGame.Enabled := True ; mGame.SetFocus ; ActiveControl := mGame ; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.GameKeyPress(Sender: TObject; var Key: Char); begin // Mise en majuscule du caractère saisi Key := UpCase(Key); showmessage(Char(Key) + ' ' + IntToStr(Ord(key))); end;
Partager