Objet dynamique dans objet dynamique

Résolu
Signaler
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005
-
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005
-
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

Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005

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;

...
Messages postés
55
Date d'inscription
mardi 26 août 2003
Statut
Membre
Dernière intervention
22 janvier 2006

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
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005

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
Messages postés
73
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
24 juillet 2005

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