Objet dynamique dans objet dynamique

Résolu
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005 - 18 juil. 2005 à 07:52
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005 - 21 juil. 2005 à 10:55
Slt à tous, voilà mon premier souhait est de créer un TTabSheet dans un
TPageControl (jusque là rien de mal, tout va bien, la suite ne va plu
...).

Mon deuxième souhait est (évidemment) de ne pas créer un TTabSheet vide
de ce fait pour tester, j'ai pris un composant tout simple (TLabel). Et
c'est la que le bas blesse car j'essaie de créer un objet sur un autre
objet qui n'existe pas (encore) Voyez pluto ...



procedure TForm1.FormCreate(Sender: TObject);

begin

with TTabSheet.Create(PageControl1) do begin

PageControl:= Pagecontrol1;

Name:='Tab1';

caption:='Tab1 cap';

with TLabel.Create(Tab1) do begin

Parent: =Tab1;

Top:=8; Left:=8;

Caption:='Label cap'

end;

end;

end;



L'erreur de compilation qui s'affiche n'est autre que :

[Erreur] Unit1.pas(41): Identificateur non déclaré : 'Tab1'



J'ai également fait le test en remplacant dans la création du TLabel "Tab1" par "Self"

et là pas de soucis . Mais comme mon but n'étant pas de créer un label sur la Form mais dans un tab ...



Qqn aurait-il une ou des suggestions ?



Alexis

4 réponses

alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005
18 juil. 2005 à 08:03
Est-ce que ceci peut arranger mon problème ?



dans le cas ou la propriété "PageIndex" n'est pas précisée :

...

with TLabel.Create(self) do begin

Parent:= PageControl1.Pages[PageControl1.PageCount-1];

Top:=30; Left:=30;

Caption:='Label cap'

end ;

...



et comme ca quand le "PageIndex" à une valeur définie :

...

PageIndex: =0;

with TLabel.Create(self) do begin

Parent:=PageControl1.Pages[0];

Top:=30; Left:=30;

Caption:='Label cap'

end;

...
3
yvescollet Messages postés 55 Date d'inscription mardi 26 août 2003 Statut Membre Dernière intervention 22 janvier 2006
18 juil. 2005 à 08:41
hello,



j'ai jamais fait quelque chose de ce genre là, mais l'erreur me saute aux yeux...



instanciation d'un objet :

- référence := Classe.Create;



hors tu n'instancies ni ton TTabSheet ni ton TLabel de cette manière.



essaies:



procedure TForm1.FormCreate(Sender: TObject);
var

MonTabSheet : TTabSheet;

MonLabel : TLabel;

begin
with MonTabSheet : = TTabSheet.Create(PageControl1) do begin
PageControl:= Pagecontrol1;
Name:='Tab1';
caption:='Tab1 cap';
with MonLabel : = TLabel.Create(Tab1) do begin
Parent:=Tab1;
Top:=8; Left:=8;
Caption:='Label cap'
end;
end;
end;


Yves
0
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005
18 juil. 2005 à 13:02
Oui c'est ce qui m'a frappé aussi en lisant l'exmple de l'aide delphi. Mais ca marche aussi.

Il est vrai que pour tout autre objet à déclarer j'utilise la méthode traditionnelle à savoir celle que tu cite . C'est sympa de le rappeller



Alexis
0
alexis2015 Messages postés 73 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 24 juillet 2005
21 juil. 2005 à 10:55
Re bonjour, J'ai une autre question ... tjs ds le même sujet.

Maintenant je désire mettre mon TTabSheet et Mon TLabel dans une unit
apart de manière à la compiler plus tard en dll. Mais pour éviter du
taper tout le code qui précise la position, la hauteur ... , je pensais
mettre toutes des donnée dans un fichier dfm que l'unité chargerais.

J'avoue que je suis perdu et que je ne sais pas comment prendre le problème (si ce n'est par les "cornes", mais où sont-elles )



Amicalement

Alexis
0