IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES TESTS DELPHI WIN32 AUTOMATISMES DELPHI .NET QUICK-REPORT
Retour à l'accueil
85 - COPIE D'UN COMPOSANT À L'EXÉCUTION

PRÉSENTATION : Copie des propriétés publiées d'un composant
ZIP : Téléchargez le zip APERÇUS :

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 œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.