 |
|
 |
|
 |
85 - COPIE D'UN COMPOSANT À L'EXÉCUTION
|
|
|
|
PRÉSENTATION :
Copie des propriétés publiées d'un composant
NOTES :
A noter que cette méthode ne copie pas les évènements.
Seules les propriétés publiées ( section published ) sont enregistrées.
CODE :
Procedure TForm1.FormCreate(Sender: TObject);
Begin
// Pour pouvoir lire les composants sous forme de ressources
// à l'exécution, il faut déclarer les classes utilisées
RegisterClass(TLabel);
End;
Function CreationCopie(Component:TControl):TControl;
Var
Stream:TMemoryStream;
Begin
Stream :=TMemoryStream.Create;
Try
// WriteComponent permet d'écrire toutes les propriétés publiée
Stream.WriteComponent(Component);
Stream.Seek(0,soFromBeginning);
// ReadComponent permet de les lire en créant un nouveau composant
Result := TControl(Stream.ReadComponent(Nil));
// La propriété Parent doit être mise à jour car elle n'est pas
// enregistrée ( ce n'est pas une propriété publiée, mais seulement
// publique )
Result.Parent := Component.Parent;
Finally
Stream.Free
End;
End;
Procedure TForm1.Label1Click(Sender: TObject);
Begin
With TLabel(CreationCopie(Label1)) Do
Begin
Top := Top+20;
End;
// Suppression de l'événement pour ne le créer qu'une fois.
TLabel(Sender).OnClick := Nil;
End;
|
| |
 |
|
 |
Les sources présentées sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
2003 Bruno Guérangé. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.
|