Composant orienté donnée, propriété TableName [Résolu]

Signaler
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
Bonjour,

Je suis en train de créer un composant dans lequel j'aurais besoin d'une propriété TableName, j'ai mis une autre propriété DatabaseName, mais je n'arrives pas a avoir le comportement similaire au composant TTable, c'est à dire, en développement, avoir directement la liste des tables de la base de données DatabaseName. Ma propriété est déclaré exactement comme celle de TTable :

property TableName : TFileName read FTableName write SetTableName;

Est-ce que vous sauriez comment faire, j'ai exploré tout le source des unités Db, DbTables et je n'ai rien trouvé.

7 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Pour que l'inspecteur d'objets utilise l'éditeur de propriétés adapté, il faut lui indiquer en utilisant RegisterPropertyEditor :
(extrait de bdereg.pas)
RegisterPropertyEditor(TypeInfo(TFileName), TTable, 'TableName', TTableNameProperty);

Voir l'aide en ligne pour plus de précisions.

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
As-tu bien pris le temps de comprendre le sens de la déclaration ci-dessus ? Tu sembles confondre propriété et éditeur de propriété.

May Delphi be with you !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010

Bon je ne sais pas comment, m'escuser, mais efféctivement, je n'ai pas bien lu ta réponse la première fois, mais j'ai persisté la deuxième, donc la troisième, je me suis rattrapé, j'ai ouvert le fichier bdereg.pas, et j'ai trouvé mon bonheur avec le fichier bdreg.pas aussi.

Donc, la réponse est acceptée, deux fois même, je te remerci et encore désolé, d'etre un peu tête en l'air.
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010

Je viens de les télécharger et de regarder le code mais il n'y a pas de propriété TableName, il utilise une propriété TDataSource, et là, c'est l'IDE qui gère l'affichage des composants connus.

Donc, ma question reste d'actualité.
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010

La fonction RegisterPropertyEditor permet de créer un éditeur de propriété, mais propriété TableName de TTable n'a pas d'éditeur de propriété, il s'agit d'une simple liste, de plus si je trace le code de Db, DbTables, il n'y a aucun appelle à RegisterPropertyEditor.

Donc, je pense que tel que j'ai compris cette fonction, elle n'est pas la réponse à mon problème, sauf si il y a une autre manière de l'utiliser auquel cas, pourais-je avoir un exemple ?

Merci.
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010

Je viens de regarder a nouveau, car en effet, il est possible que je ne comprennes pas tout.

Ton exemple, premierement, je le déclare où ? j'ai essayé dans la procédure Register, ça a l'air d'être bon.

Ensuite, je ne suis pas sûr de tout saisir, je dois créer une class TTableNameProperty ou alors elle existe ? et si je dois la créer comment faire pour qu'elle contienne la liste des tables de ma base ?

Mon objet s'appelle TZoom, avec une propriété nommée TableName de type TFileName, donc ma déclaration devra être :
RegisterPropertyEditor(TypeInfo(TFileName), TZoom, 'TableName'
, TTableNameProperty);

c'est cela ?
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Il est vrai que l'enregistrement d'un éditeur de propriétés est un peu déroutant. Si tu crées d'autres composants, cette démarche te sera utile pour affecter des éditeurs de propriétés tout fait (comme ci-dessus) ou alors de ton cru. Enfin, je suis heureux qu'on ait fini par s'entendre .
A mon tour d'accepter ta réponse

May Delphi be with you !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.