Propriété Highlighted d'un TTabSheet (TPageControl) [Résolu]

Signaler
Messages postés
615
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
-
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
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

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
615
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
3
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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
pas tout à fait..
car c'est coder encore en dur.
il faudrait remplacer le 4 par un (count - 1)

cantador
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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