begin process at 2010 02 10 12:57:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Création d'un composant


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Création d'un composant

mercredi 25 juillet 2007 à 12:46:46 | Création d'un composant

speedy_gonzales

Bonjour tous le monde
 
          Voilà j'ai créer un Composant dans lequel je créer d'autres composant. Les composants se créer correctement lors de l'appel au Create du composant principal mais ce que je voudrais c'est qu'il n'apparaissent pas dans la form de mon application à chaque fois que j'ouvre mon projet. En effet à chaque fois que j'ouvre mon projet, tous les composants se rajoute dans ma form se qui devient vite imbuvable. Si je laisse les composants dans ma form, au lancement de l'application il y a des erreurs me disant qu'il ne trouve pas la classe des composants que je créer avec mon composant principal. Ce qui fait que je suis obliger de les enlever de ma fiche à chaque fois.

       Comment faire pour que ces composants n'apparaissent plus dans ma form car ils ne sont en fait utilisé que par mon composant principal et l'application n'intervient jamais dessus.

Merci de votre aide.
mercredi 25 juillet 2007 à 17:32:01 | Re : Création d'un composant

f0xi

Membre Club Administrateur CodeS-SourceS

pourrait tu nous donner le code de ton composant ?
mercredi 25 juillet 2007 à 18:51:40 | Re : Création d'un composant

speedy_gonzales

Voici le constructeur de mon composant dérivé de Serversocket (je sais... il y a Indy)

Si j'ai compris Create  de mon composant est effectué au lancement de l'application

constructor TCometServer.Create(Owner:TComponent);
begin
     inherited Create(Owner);
     MonSMTP:=TNMSMTP.Create(Owner);
     MonFTP:=TNMFTP.Create(Owner);
     Image:=TImage.Create(Owner);
     BarInfo:=TStatusBar.Create(Owner);
     TimerGrafTravail:=TTimer.Create(Owner);
end;

Dand le destroy, je libere les objet créés

destructor TCometServer.Destroy;
begin
    inherited Destroy;
    Image.free;
    MonFTP.free;
    MonSMTP.free;
    BarInfo.free;
    TimerGrafTravail.free;
end;

Donc je place mon composant TCometServer dans ma form et a chaque fois que
j'ouvre mon projet, les composants: MonFTP, MonSMPT, Image, BarInfo et TimerGrafTravail apparaissent dans ma form.

Est-ce que cela vient du Owner que je passe en parametre lors de la creation ? j'ai essayé en mettant "Self" cela donne la meme chose.

Merci.
jeudi 26 juillet 2007 à 01:32:08 | Re : Création d'un composant

f0xi

Membre Club Administrateur CodeS-SourceS


alors deja, avant tout, tout composant créer par un autre doit etre l'enfant de ce dernier.

soit :

constructor TCometServer.Create(Owner:TComponent);
begin
  inherited Create(Owner);
  MonSMTP := TNMSMTP.Create(self);
  MonFTP  := TNMFTP.Create(self);
  Image   := TImage.Create(self);
  BarInfo := TStatusBar.Create(self);
  TimerGrafTravail := TTimer.Create(self);
end;



si il dispose d'une propriété "parent" il faut egalement la precisée :

constructor TCometServer.Create(Owner:TComponent);
begin
  inherited Create(Owner);
  MonSMTP        := TNMSMTP.Create(self);
  MonSMTP.Parent := Self;
  MonFTP         := TNMFTP.Create(self);
  MonFTP.Parent  := Self;
  Image          := TImage.Create(self);
  Image.Parent   := Self;
  BarInfo        := TStatusBar.Create(self);
  BarInfo.Parent := Self;
  TimerGrafTravail := TTimer.Create(self);
  TimerGrafTravail.Parent := Self;
end;


ensuite attention a la destruction, le inherited Destroy se place a la fin et non au debut de la methode et dans l'ordre inverse de creation, ne pas oublier non plus d'appeler les methode de desactivation des objets avant la liberation pour eviter tout appel interne pouvant provoquer une erreur :

destructor TCometServer.Destroy;
begin
  TimerGrafTravail.Enabled := false;
  MonFTP.Disconnect;
  MonFTP.Active := false;
  MonSMTP.Disconnect;
  MonSMTP.Active := false;

  TimerGrafTravail.free;
  BarInfo.free;
  Image.free;
  MonFTP.free;
  MonSMTP.free;

  inherited Destroy;
end;


si ensuite, les composants apparaissent dans la fiche et non dans le composant, c'est que ce composant n'est pas un composant visuel pouvant contenir (visuellement) d'autre composant.


jeudi 26 juillet 2007 à 09:14:20 | Re : Création d'un composant

speedy_gonzales

Merci fOxi pour tes explications claires, je vais faire ces modifications dans mon code.
jeudi 26 juillet 2007 à 10:16:05 | Re : Création d'un composant

speedy_gonzales

J'ai effectué les modifications et j'aurai une autre question
quand j'ecrit par exemple (ça le fait avec tous les XXX.parent:=self)

 MonFTP.Parent  := Self;

J'ai une erreur de compilation me disant que l'identificateur Parent n'est pas déclaré.
Cela veut t'il dire que je n'ai pas à mettre ces lignes car je n'ai pas la propriété Parent n'existe pas pour ces composants ou c'est autre chose.

J'ai regarder l'exemple de l'aide de Delphi avec les RadioButton, la propriété Parent n'est pas dans les propriétés du composant quand je regarde ces propriétés et pourtant il fond un RadioButton.Parent:=RadioGroup;

Ca me dit la  même chose pour l'identificateur Active dans le Destroy

jeudi 26 juillet 2007 à 13:22:08 | Re : Création d'un composant

Guillemouze

Parent est une propriete de TControl (ou TWinControl). Donc, si ton composant (TNMFTP par exemple) n'herite pas de TControl, il n'y a pas besoin de lui affecter de parent. La seul utilité du parent que je connaisse est pour les composant qui ont une partie graphique (pour definir l'origine de leur coordonnées, ...)


Cette discussion est classée dans : créer, form, composant, principal, composants


Répondre à ce message

Sujets en rapport avec ce message

Form dans un composant [ par Bruto ] Je voudrais inclure une form dans un de mes composant.Pour cela j'ai créer un composant avec l'extension '.pas' et tout ce qui est register, ...Je fab Réseaux, composants...connection failed! [ par Vinasse ] Bonjour à tous! J'avoue que le titre de mon message est pas très explicite... Je résume la situation: Je suis en train de créer un logiciel qui va per Composant POP3 et SMTP [ par Kundun2 ] Bonjour,je voudrais savoir si quelqu'un aurait sous la main les composants POP3 et SMTP présent jusqu'a la version 6 de delphi !!En effet, j'ai un pro Je recherche un composant pour mettre des gifs dans une form. [ par Youyou0214 ] Tout est dans le titre ;-)PS: Je voudrais un composant unique (qui ne fait pas partie d'une librairie pour m'vit l'installer toute entire pour un seu [HELP] Duplication de Composant ou Utilisation de tempaltes [ par Cyrille2 ] Bonjourje dev un chat en Delphi et je me confronte au probleme suivant : Je dois creer dynamiquement mes pvs selon un modele !!!G essayer :-de les cre Creation d'un composant ayant comme propriété un autre composant [ par guiguitt ] Bonjour,J'ai un petit problème... Voila Je veux créer un composant dérivé de TEdit qui propose au programmeur une propriété de Type TCollection. Ainsi Création dynamique de composant [ par Amadeus ] Comment créer dynamique des contrôle TImage ?Je voudrais créer sur une Form autant de TImage que d'image se trouvant dans un répertoire donné. Comment insertion d'un composant custom sur une form en execution [ par vib ] Mon appli permet d'insérer des controles dynamiquement sur une form.J'ai créé un composant à partir de Timage.Lorsque je veux l'insérer sur la form, D Bonjour, [ par Ethan00000 ] J'ai pluseiur questions a te poser ...Quand un icone est dans le systray, et que la form associée à cet icone est visible mais qu'une autre applicatio J'ai pluseiur questions a te poser ... [ par Ethan00000 ] Quand un icone est dans le systray, et que la form associée à cet icone est visible mais qu'une autre application se trouve devant cette form. Commen


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,279 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales