Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous !
J'aurai voulu savoir quelles sont les limitations d'utilisation selon le type de fonction :
public, private ou protected
Merci
Hors ligne
Les propriétés et les méthodes définies par l’utilisateur peuvent être déclarées avec différents droits d’accès :
· Public (accessible par tout objet)
· Protected (accessible par tous les objets dérivés)
· Private (accessible uniquement au sein du même objet).
Hors ligne
Est-il possible de modifier le type d'accès d'une fonction une fois écrite ?
Par exemple si je la met en public et que je me rend compte qu'il faudrait qu'elle soit private.
Hors ligne
cradleofpain a écrit:
Est-il possible de modifier le type d'accès d'une fonction une fois écrite ?
Par exemple si je la met en public et que je me rend compte qu'il faudrait qu'elle soit private.
La modification en dynamique n'est pas possible.
Par contre, tu peux effectivement le faire au niveau de la déclaration après avoir fait une étude d'impact soigneuse:
Si tu passes de public à private une fonction appelée par un objet autre que celui qui la porte tu auras
des plantages
Hors ligne
J'ai trouvé !
Il fallait que je clique sur "Show/Hide Prototype" pour voir les caractéristiques de ma fonction.
A partir de là je peux modifier l'accès si je veux !
Hors ligne
Lorsque ma fonction est publique, pourquoi je ne la vois pas dans la liste des fonctions des autres objets ?
Hors ligne
Ta fonction étant liée à l'objet sur lequel tu l'as créée, il te faut invoquer cet objet pour accéder à ta fonction:
MyObject.of_myfunction
Hors ligne
Ma fonction est contenue dans une window.
C'est la window l'objet concerné ?
Hors ligne
Et oui... Au besoin, il te faudra "instancier" ta fenêtre pour pouvoir y accéder dans ton script...
Hors ligne
Mais donc dans les autres window, si on regarde function list, on ne peut pas voir cette fonction publique ?
Hors ligne
cradleofpain a écrit:
Mais donc dans les autres window, si on regarde function list, on ne peut pas voir cette fonction publique ?
non, tu ne peux pas voir... mais tu peux l'appeler... (ca marche comme pour le téléphone...)
Hors ligne
Non, car elle est quand même liée à ta fenêtre.
Si tu veux y accéder partout dans l'application, il te faut créer une fonction globale qui ne sera liée à aucun objet. (attention, les fonctions globales ne sont à utiliser que dans des cas très particuliers)
Par contre, tu as possibilité d'utiliser l'option "autoscript" pour pouvoir visualiser rapidement toutes les fonctions, varaiables et méthodes d'un objet dans un script...
Hors ligne
Ok. Donc si je la laisse publique c'est pas bien grave.
C'est même plus tranquille au cas où j'aurais besoin de l'utiliser à un autre endroit dans mon appli.
Hors ligne
Oui, mais si elle est réellement très spécifique à ta fenêtre, tu as tout intérêt à la passer en private car tu n'auras pas l'occasion de l'appeler dans d'autres endroits de ton appli...
Hors ligne
Ok. Et bien merci à vous !
Vous pouvez signaler le problème comme résolu.
A+
Hors ligne