3 votes

La bonne façon de créer un composant personnalisé contenant d'autres composants

Je veux faire mon propre composant simple qui contient d'autres composants. Cela ressemble à :

TTag = class(TLayout)
private
    _line: TLine;
    _label: TLabel;
    _background: TRoundRect;
    _button: TLabel;
public
    constructor Create(AOwner: TComponent); override;
end;

Lorsque je place ce composant sur le formulaire, tout est correct et la structure de mon formulaire ressemble à ceci : enter image description here

mais après la réouverture de l'IDE Delphi, cela ressemble à cela :

enter image description here

Comment ajouter des sous-composants pour éviter ce comportement étrange ?

8voto

Uwe Raabe Points 21302

C'est un cas typique pour SetSubComponent :

Appelez SetSubComponent pour indiquer si ce composant est une sous-composant. Un sous-composant est un composant dont le Propriétaire est un composant autre que le formulaire ou le module de données dans lequel il réside. À moins qu'un tel composant n'appelle pas SetSubComponent avec la valeur True pour IsSubComponent, ses propriétés publiées ne seront pas enregistrées dans le fichier du formulaire.

Pour chacun de vos sous-composants, faites un appel à SetSubComponent(True) dans votre constructeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X