realbasic-nug.fr
[Top] [All Lists]

Re: problème lors de l'emploi de l'opérateur new

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: problème lors de l'emploi de l'opérateur new
From: patrick santoni <patricksantoni1 at mac dot com>
Date: Wed, 27 Jun 2007 14:26:24 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <mailman dot 0 dot 1182883168 dot 21579 dot realbasic-nug dot fr at lists dot realsoftware dot com> <D34138F7-91E3-4B20-9629-DDEB76226926 at mac dot com> <46824D0B dot 40909 at wanadoo dot fr>
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;)







<Prev in Thread] Current Thread [Next in Thread>