Propriété Highlighted d'un TTabSheet (TPageControl)

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 23 mai 2012 à 11:53
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 25 mai 2012 à 10:50
Bonjour,

J'ai un souci avec la propriété Highlighted de TTabSheet.
Je voulais trouver un moyen simple de mettre cette propriété à True lorsque la page correspondante est active. Voici mon code qui m'indique une erreur à la compilation :
identificateur non déclaré : Highlighted

No comprendo!

procedure TMainForm.PageChange(Sender: TObject);
 var C, Onglet : Integer;
begin
  For C := 0 to ComponentCount - 1 do
   if Components[C] is TTabSheet then
    For onglet := 1 to 5 do
     if TTabSheet(Sender).Name = 'TabSheet'+IntToStr(onglet)
      then TTabSheet(FindComponent('TabSheet'+IntToStr(onglet)).Highlighted := True
      else TTabSheet(FindComponent('TabSheet'+IntToStr(onglet)).Highlighted := False;
end;


Voyez-vous mon erreur?

Jean_Jean

5 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
23 mai 2012 à 13:12
Bonjour,

une piste :

procedure TForm1.PageControl1Change(Sender: TObject);
var
  i: integer;
begin
  TTabSheet(PageControl1.ActivePage).Highlighted := not (TTabSheet(PageControl1.ActivePage).Highlighted);
end;


Reste maintenant à les rendre inactifs tous juste avant..

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
23 mai 2012 à 13:22
si tu colles ceci juste avant (3 onglets)

  TTabSheet(PageControl1.Pages[0]).Highlighted := false;
  TTabSheet(PageControl1.Pages[1]).Highlighted := false;
  TTabSheet(PageControl1.Pages[2]).Highlighted := false;


ça marche, mais c'est pas beau.

cantador
3
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
23 mai 2012 à 13:54
Merci cantador, c'est Top!

procedure TMainForm.PageChange(Sender: TObject);
 var Onglet : Integer;
begin
  For onglet := 0 to 4 do TTabSheet(PageControl1.Pages[onglet]).Highlighted := False;
  TTabSheet(PageControl1.ActivePage).Highlighted := not (TTabSheet(PageControl1.ActivePage).Highlighted);
end;


TTabSheet n'est sans doute pas considéré comme un composant pouvant être directement identifié par FindComponent... Bon à savoir

Jean_Jean
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
23 mai 2012 à 20:05
pas tout à fait..
car c'est coder encore en dur.
il faudrait remplacer le 4 par un (count - 1)

cantador
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 mai 2012 à 10:50
procedure TForm1.PageControl1Change(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to PageControl1.PageCount - 1 do
    TTabSheet(PageControl1.Pages[i]).Highlighted := False;
  TTabSheet(PageControl1.ActivePage).Highlighted := not (TTabSheet(PageControl1.ActivePage).Highlighted);
end;



cantador
3
Rejoignez-nous