1/ cvsPlanGraphique() est un tableau de canvas. Ce canvas appartient
à la fenêtre MainWin. Ce n'est donc pas une propriété ni public, ni
protected ni private
3/ pour expliquer mon application; je dirai ceci :
je dispose de 3 fenêtres qui chacune auront besoin de cloner 4 canvas
Le méthode bestiale consistant à placer dans chacune de ces fenêtre
un canvas de base indexé et de réaliser le clonage par new : cela
marche effectivement. En effet, quand on est en action sur une
fenêtre en particulier le new cvsPlangraphuque() fonctionne sans
nécessité de faire d'ailleurs référence au nom de la fenêtre.
Or j'ai des traitements à réaliser sur ces canvas clonés et dans
cette manière décentralisée de traiter la question je suis obligé de
dupliquer le code en le plaçant dans des méthodes propres à chaque
fenêtre alors qu'il est infiniment plus élégant de passer par une
classe, un constructor et des méthodes et propriétés de la classe
plutôt que de dispatcher du code identique dans chacune des fenêtre.
Les tests en cours m'amènent à penser que je vais être obliger de
faire ainsi, me privant de la généricité de l'approche objet.
J'aimerai bien avoir confirmation de cette empêchement par le service
technique de REAL software Europe et de la raison de cette limite
très curieuse. y a t il un obstacle théorique lié à l'approche objet ?
D'autant qu'en plaçant le code New MainWin.CvsPlanGraphique(0) dans
un module je tombe sur le même message sybillin :
-> Le type est privé et ne peut être utilisé qu'au sein d'un
module ' !!!!!
Alors que je suis dans un module.
Mystère et boule de gomme !!!
La question est donc la suivante : faut il nécessairement pour cloner
un contrôle (canvas, editfield, etc...) écrire le code de clonage à
l'aide de l'opérateur NEW dans une méthode appartenant à la fenêtre ?
Y a t il une solution du côté des méthodes partagées ? laquelle ?
Il est grand temps que la documentation technique promise en français
il y a prés d'un an soit enfin disponible d'une part et que d'autre
part REAL software US présente les nouveautés de chaque nouvelle
release de manière plus explicite et didactique. La société US est
certes une petite entreprise mais cela n'est pas une raison pour ne
pas mieux présenter les nouveautés. Vendre son produit, c'est bien le
présenter intelligemment à ses clients. Je dis ceci sans acrimonie
mais à titre de suggestion positive.
En attendant, si quelqu'un a une idée concernant ma question, elle
est la bienvenue. Merci d'avance
signé : Patrick Santoni
Le 27 juin 07 à 13:42, Damien a écrit :
patrick santoni a écrit :
bonsoir à tous,
je suis nouveau membre du forum
ma question concerne la généricité de l'emploi de l'opérateur NEW
Je dispose d'une fenêtre nommée MainWin
Dans celle-ci je dispose d'un canvas d'index 0 nommé cvsPlanGraphique
Si j'en veux un clone, je crée une propriété de type MonCanvas as
canvas (volatile -> Dim ou non)
par MonCanvas = new cvsPlanGraphique -> ça marche
Par contre, dans mon application, j'ai besoin de généricité. Aussi
ai je créé une classe IBCanvas dans laquelle j'ai mis le code
suivant dans le "constructor"
MonCanvas = new MainWin.cvsPlanGraphique()
où MonCanvas est une propriété de la classe
je note qu'écrivant MainWin.cvsPlanGraphique dans le code du
constructor, l'autocompétion me fait apparaitre cvsPlanGraphique
après le point placé aprés MainWin. mais pas dans le cas où le
texte est précédé de new
Cette écriture ne marche pas et le message d'alerte est le suivant :
-> Le type est privé et ne peut être utilisé qu'au sein d'un module
que j'écrive
MonCanvas = new MainWin.cvsPlanGraphique(0)
rien ne marche
et pourtant je suis obligé de référencé le canvas par MainWin
NOTA BENE : le constructor est appelé dans une méthode de MainWin
qui est ouverte au moment de l'appel. Ce cas particulier n'est pas
évoqué dans la documentation
qu'en pensez vous ?
Merci d'avance pour vos réponses
Patrick Santoni
A tout hasard, la propriété cvsPlanGraphique est-elle de scope
publique ou bien est-ce une propriété protégée ou privée?
Enfin juste uen idée comme çà car sans plus de code j'ai du mal à
me représenter dans ma petite tête ce que tu essaies de faire;)
|