Tabsheet et composant inclu

Tabsheet et composant inclu - Delphi/Pascal - Programmation

Marsh Posté le 11-10-2007 à 22:43:08    

Bonjour,
 
Voici le sujet:
Je crée dynamiquement un certain nombre de tabsheet (tous contenu dans le même pagecontrol). Tous les tabsheet sont identiques c'est à dire qu'ils contiennent tous entre autre un StringGrid.
 
Problème:
L'accès aux éléments contenu dans les tabsheets.
 
Infos:
La création du stringgrid:
 
Code :
 
 

Code :
  1. With  Grille do
  2.       begin
  3.         Grille := TStringGrid.Create(Tab);
  4.         Parent := Panel;
  5.         Name := 'Grille_' + IntToStr(j);
  6.         Width := 662;
  7.         Height := 407;
  8.         Left := 0;
  9.         Top := 0;
  10.         ColCount := 7;
  11.         RowCount := 13;
  12.         DefaultColWidth := 100;
  13.         ColWidths[0] := 50;
  14.         DefaultRowHeight := 30;
  15.        end;


En consultant certains forum j'ai entendu parler de TobjectList ou de mettre un Panel mais je m'y perd un peu.
 
Donc que faire ? Et comment xD
 
Merci d'avance

Reply

Marsh Posté le 11-10-2007 à 22:43:08   

Reply

Marsh Posté le 19-10-2007 à 18:50:41    

Le "with Grille" est supposé utiliser la même variable que celle que tu assignes 2 lignes plus bas ? Si oui ton truc risque d'avoir un fonctionnement très aléatoire, surtout si tu l'exécutes en mode non-debug et hors de Delphi (le but du with est de ne pas relire à chaque coup la valeur de la variable, mais si tu la changes en cours de route il ne va justement pas la relire...)
Il vaudrait donc mieux faire le create avant le with.
 
Ensuite pour garder la liste de tes éléments, tu peux en effet utiliser un TObjectList.
 

Code :
  1. Objects: TObjecTList;


 

Code :
  1. Objects := TObjectList.Create;
  2. Objects.OwnObjects := False; { de mémoire, c'est peut-être un param à passer au Create - c'est pour ne pas qu'il détruise les objets quand tu détruiras la liste, c'est la Form qui détruira les objets, comme ce sont des composants qui y sont ajoutés. }


 
puis pour chaque objet:
 

Code :
  1. Objects.Add(Grille);


 
Tu peux ensuite accéder à tes objets en utilisant cette liste (count, items[], etc.)
Je ne sais pas si ça correspond à ce que tu attendais...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed