fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 2009
-
29 juin 2002 à 23:07
grichardjoe
Messages postés1Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention 7 septembre 2004
-
7 sept. 2004 à 14:40
Alos voila
g un TPanel ki contient 10 autres composants (Tlabel,Tbutton,TTrackbar)
et je voudrai dupliquer ce composant autant de foi ke je veu.
je sais comment créer un composant "dynamiquement" mais c un peu lourd de devoir réaffecter toutes les propriétés des composants :)
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 30 juin 2002 à 15:29
Je viens d'avoir une idée pour ton problème :
Au lieu de créer les composants un par un à chaque fois, construit une nouvelle classe descendante de TPanel qui créé automatiquement les composants habitules qu'il contient. Ceci se fait dans le constructeur Create.
Par contre dans ce cas tu n'a pas accès aux évènements des composants enfants dans l'instpecteur d'objet. Tu dois donc créer des évènements spécifiques.
Voici un petit exemple de création d'un panneau contenant un bouton. Un évènement OnClickButton est ajouté au panneau pour signaler l'appui sur le bouton :
type
TMonPanel = class(TPanel)
private
{ Déclarations privées }
FButton:TButton;
FOnClickButton:TNotifyEvent;
Procedure BoutonClick(Sender: TObject);
protected
{ Déclarations protégées }
public
{ Déclarations publiques }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Déclarations publiées }
property OnClickButton: TNotifyEvent read FOnClickButton write FOnClickButton;
end;
Constructor TMonPanel.Create(AOwner: TComponent);
Begin
Inherited Create(AOwner);
FButton:=TButton.Create;
FButton.Left:=0;
FButton.Right:=0;
FButton. ... // tout ce que tu veux définir
End;
Procedure TMonPanel.BoutonClick(Sender:TObject);
Begin
If Assigned(FOnClickButton) Then FOnClickButton(Self);
End;
Note que si tu crées seulement ces composants en exécution, tu n'es pas obligé d'installer ce composant mais seulement l'inclure dans une unité du source.
fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 20096 30 juin 2002 à 15:37
Salut ok merci :)
c'et ce ke j'avai pensé a foire, me crée un composant
mais g trouvé plus simple
j'utilise le "composant" TFrame
et la kan je le duplique ben no prob ca duplique ces enfants :)
grichardjoe
Messages postés1Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention 7 septembre 2004 7 sept. 2004 à 14:40
Bonjour Fabiin, as tu essayé de placer des objets TFrame dans ta Frame ou que des objets de base (TMemo, TImage, TButton...)
Je fais un editeur de pages (un PageControl placé sur une TFrame (la racine de mon arbrescence d'objets, maFrameRacine) , je peux ainsi sauvegarder le tout avec WriteComponentResFile('monfichier', maFrameRacine))
Les objets placés sur une page sont des boutons (qui font les liens entre pages) des Memo (information divers) ,des images (complement didactique), et des objets personnalise (comprendre TFrame, avec plusieurs objets de base a l'interieurs)
Là on commence à voir dans maFrameRacine apparaitre des TFrame.
Et le souci est que mes objets de base sont bien enregistrés (toutes les proprietes sont sauvegardés) , mais mes objets personalisées ormis la position de la Frame aucunes autre proprietés n'est sauvegardé.