2009-09-12 15 views
4

Un composant sur lequel je travaille utilise un TCollection pour contenir des liens vers d'autres composants. Lorsque les articles sont édités dans le concepteur leurs étiquettes ressemblent à ceci:Modifier l'étiquette d'un TCollectionItem dans l'éditeur Delphi

0 - TComponentLink 
1 - TComponentLink 
2 - TComponentLink 
3 - TComponentLink 

Comment puis-je ajouter des étiquettes significatives (le nom du composant lié peut-être)? par exemple. En prime, pouvez-vous me dire comment faire apparaître l'éditeur de collection lorsque l'on clique deux fois sur le composant?

Répondre

5

Pour afficher un nom override GetDisplayName significatif:

function TMyCollectionItem.GetDisplayName: string; 
begin 
    Result := 'My collection item name'; 
end; 

Pour afficher un éditeur de collection lorsque le composant non visuel est double-cliqué vous devez passer outre la procédure TComponentEditor Edit.

TMyPropertyEditor = class(TComponentEditor) 
public 
    procedure Edit; override; // <-- Display the editor here 
end; 

... et enregistrer l'éditeur:

RegisterComponentEditor(TMyCollectionComponent, TMyPropertyEditor); 
1

Le nom affiché dans l'éditeur est stocké dans la propriété DisplayName de l'élément. Essayez de régler votre code pour définir quelque chose comme ceci lorsque vous créez le lien:

item.DisplayName := linkedItem.Name; 

Veillez à ne pas changer le DisplayName si déjà configuré, bien que l'utilisateur. C'est un désagrément majeur pour l'assurance-chômage.

+3

Merci Mason, mais malheureusement, ça n'a pas marché pour moi. Cela m'a cependant conduit à une réponse qui a fonctionné. Remplacez simplement la fonction TCollectionItem "GetDisplayName" par exemple. function TMyCollectionItem.GetDisplayName: chaîne; begin Résultat: = 'Nom de mon article de collection'; fin; – norgepaul