Composant orienté donnée, propriété TableName

Résolu
lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010 - 15 mars 2006 à 15:03
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 21 mars 2006 à 21:04
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

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
18 mars 2006 à 00:10
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.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
20 mars 2006 à 19:24
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.
3
lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010
21 mars 2006 à 10:05
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.
3
lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010
16 mars 2006 à 08:46
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é.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010
20 mars 2006 à 09:47
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.
0
lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010
21 mars 2006 à 09:17
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 ?
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
21 mars 2006 à 21:04
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.
0
Rejoignez-nous