Publier une propriété de type array

[Résolu]
Signaler
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
-
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
-
Bonjour à tous,

J'ai crée une nouvelle classe dans laquelle je souhaite publier une propriété comme Strings[i] du TStringList.

Voila :

private
FEntrees : array of TPersonne;

Et je ne sais pas comment faire pour la publier pour que l'on puisse modifier chaque entree indépendament.

Pour info :

TPersonne = record
Nom, Prenom : string[10];
end;

Merci d'avance de votre aide

Si tu ne te plantes pas ......
tu ne poussera jamais

5 réponses

Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Si il faut que je publie la prorpiete car si je la met dans public elle va appartaitre dans l'editeur de code comme une variable et je ne pourrais pas controler quand elle se modifie.

Je ne veux pas la faire apparaitre dans l'inspecteur d'objet, je crée une classe comme TStringList et non pas un composant.

published
property Tableau:array of TPersonne read FEntrees write FEntrees;

Cela ne marche pas Types incompatibles : 'dynamic array' et 'TPersonne'

Mais j'ai fini par trouver tout seul (comme un grand ;-) )

Voici

[...]
type
TPersonne = record
  nom, Prenom : string[10];
end;
TPersonnes = array of TPersonne;  // On déclare un type TPersonnes.

[...]

private
FPersonnes : TPersonnes;  // La variable qui doit être publiée.
procedure WritePersonne(Valeur : TPersonnes); // Pour changer la variable.

[...]

published
property Personnes : TPersonnes read FPersonnes write WritePersonne;  // Publication de la propriété

[...]
{ apres implementation }

procedure TContacts.WritePersonne(Valeur  : TPersonnes);
begin
FPersonnes:=Valeur;
ContactsChange; // Procedure qui doit se dérouler lorsque l'on change la valeur de FPersonnes.
end;


Au fait j'ai bloqué sur le fait que je cherchait à récuperer une case du tableau avec des crochets donc je cherchait à les integrer à ma publication mais ce n'est pas la peine.

Merci pour ton aide ô grandvizir ...

Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
published
property Tableau:array of TPersonne read FEntrees write FEntrees;


Bêtement c'est ça... Mais je sais pas si ça va marcher.
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
Un record n'apparaîtra jamais dans l'inspecteur d'objet. C'est pour cela que Public ou Published n'a pas d'importance. Si tu mets dans Private ou Protected, l'éditeur ne l'affichera pas.

Si t'écris ce que j'ai proposé, il n'y a évidement aucun moyen de savoir si la propriété a été modifiée. Il faut donc utiliser une procédure (comme c'est courant de faire).

La déclaration de TPersonne est juste. C'est ce qu'il fallait faire !

Tes lignes de codes en gris sont un très bon modèle pour quiconque voudra faire de même. :approve)
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Je croyas que pour mettre le mot reserve property il fallait que ce soit dans published. Mais si dans public ca marche aussi pas de probleme. Pour ma part je laisse cela dans published, je ne vois pas pourquoi je changerais alors que ceal marche.

Merci grandvizir.

PS : c'est la déclaration de TPersonnes ( avec un S ) qui ess juste et qu'il fallait faire. TPersonne ( sans S ) n'est juste qu'un record.

Florent
Si tu ne te plantes pas ......
tu ne poussera jamais
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
Quand tu développes une classe qui n'est pas un composant, il n'y a rien à publier. Published ne sert donc ici à rien. Published est une ouverture vers Delphi, et permet également de grouper ce qu'on pourrait appeler les entrées et les sorties des paramètres de configuration de la classe.

===========
Validez les réponses si ok...

ViewVite : HTML - ZIP