Bonjour,

je suis en train de préparer un petit papier sur la possibilité d'ajouter un bouton de clôture à un TTabItem. J'ai réussi à le faire avec style pas forcément élégance de deux manières différentes donc pas de souci de ce côté. Ce qui me gêne c'est la perte de focus ou du moins est-ce ainsi que je l’interprète.
Symptôme : lorsque je clôture un onglet, le menu système de la forme (je teste sous windows) n'est plus actif, il faut que je clique dans le cadre de la forme pour que celui-ci réagisse à nouveau.

J'ai tenté ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.CloseTab(sender: TObject);
var i : Integer;
    KeyChar : Char;
    Key : Word;
 
begin
// recherche de l'onglet 
for I := 0 to TabControl1.TabCount-1 do
  if TabControl1.Tabs[i]=TButton(Sender).TagObject then Break;
// clôture de l'onglet
if i<TabControl1.TabCount then TabControl1.Delete(i);
 
// la fenêtre perd le focus si plus de tabitems 
// code fonctionnel mais inefficace au niveau du menu système 
if TabControl1.TabCount>0 then  TabControl1.ActiveTab.SetFocus
else begin
   Key:=vkTab;
   KeyChar:=#9;
   KeyDown(Key,KeyChar,[]);
end;
end;
Une idée ou est-ce un petit bogue de Tokyo (10.2.3)
Je peux bien sûr vous fournir le code complet au besoin