Un exemple d'éditeur de propriété : un bouton avec caption extraite d'une base de donnée

Présentation
Installation:

  1. Dézipper le fichier

  2. Ouvrir DVPDBButtonRT et compiler

  3. Ouvrir DVPDBButtonDE, compiler et installer


Si tout se passe bien, vous devez le nouveau composant dans l'onglet DVP.

Quelques explications ...

Regardez bien le fichier DVPDBButtonDEReg.cpp, class PACKAGE TDataFieldsProperty : public TStringProperty.
C'est une classe générique qui peut être utilisée chaque fois que vous utilisez une property de type AnsiString qui pointe sur une liste de champs d'une table.
Vous aurez peut être à modifier la méthode GetAttributes() qui doit fournir à l'éditeur de propriété de builder la liste des champs possibles (par exemple pour limiter à certains champs).

Ensuite pour chaque propriété de type AnsiString, il faut enregistrer l'éditeur de propriété.
Pour chaque champ, créer une fonction sur le modèle suivant :

PTypeInfo FieldNameTypeInfo(void)
{
PPTypeInfo Temp;

//
// Pour simplifier l'accès à la propriété AinsiString [FieldName]
//
// __typeinfo(le_nom_de_la_class_de_votre_composant)
//
// "Fieldname" Le nom de votre propriété dans __published
//
Temp = GetPropInfo(__typeinfo(TDVPDBButton), "FieldName")->PropType;
assert(Temp != NULL);
return *Temp;
}

Puis enregistrer votre éditeur de propriété :

void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TDVPDBButton)};
//
// Enregistrement du composant
//
RegisterComponents("DVP-DVSoft", classes, 0);
//
// Enregistrement de l'editeur de property pour les noms de champs
// de la property [FieldName] du composant [TDVPDBButton]
//
RegisterPropertyEditor(FieldNameTypeInfo(),
__classid(TDVPDBButton),
"FieldName",
__classid(TDataFieldsProperty));
}

N'oubliez pas d'ajouter le paquet designide.bpi et MonComposantRT.bpi au projet et de sélectionner dans les options [Seulement en conception].
Votre paquet MonComposantRT, lui, doit avoir dans les options [Seulement en execution].
Détails
Catégories : Composants
Voir tous les téléchargements de l'auteur
Licence : Autre
Date de mise en ligne : 10 novembre 2010




Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique C++