ComponentCount / PageControl

lelahel08 Messages postés 36 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 24 octobre 2005 - 2 août 2004 à 10:08
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 3 août 2004 à 11:11
Bonjour, j'ai un probleme avec ce code :

apcFicheProspect.ActivePage.ComponentCount

qui renvoi 0 alors qu'il comtient d'autre composant,

apcFicheProspect est un TAdvPageControl (www.tmssoftware.com) mais cela fait la meme chose avec un pagecontrol tout simple ...

Quelqu'un à une idée ?

2 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
2 août 2004 à 15:52
En fait, PageControl.ActivePage est le "Parent" des Composents qui y sont déposés, pas le "Owner". Donc, ça te renvoie forcément 0.

Je ne vois que ce ça pour arriver au résultat attendu :

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
    Compos: Integer;
begin
  Compos := 0;
  for i := ComponentCount -1 downto 0 do
    if (Components[i] as TControl).Parent.Name = (PageControl1.ActivePage).Name then
      Inc(Compos);
  Label1.Caption := IntToStr(Compos);
end;


Il y a peut-être plus simple ? Mais ça marche...

Bonne prog' :-p
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
3 août 2004 à 11:11
Bon, tu préfères sans doute sous la forme d'une fonction ?

function NombreComposants(Form: TForm; PageActive: TTabSheet): Integer;
var i: Integer;
begin
  Result := 0;
  for i := Form.ComponentCount -1 downto 0 do
    if (Form.Components[i] as TControl).Parent.Name = (PageActive).Name then
      Inc(Result);
end;

...

//Exemple :
var NbreCompos: Integer;

NbreCompos := NombreComposants(Form1, PageControl1.ActivePage);
0
Rejoignez-nous