IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

Tracer des cercles avec SWT dans un composant Canvas


Sujet :

SWT/JFace Java

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Tracer des cercles avec SWT dans un composant Canvas
    Bonjour,

    Je suis tout nouveau en java et je débute l'interface SWT depuis une semaine, et notre formateur nous demande de pouvoir dessiner des cercles à la volée dans un composant Canvas afin de reproduire de façon très très modeste les principes d'un logiciel de type Paint.

    En cours nous avons utilisé le plugin org.eclipse.swt.graphics.Rectangle pour tracer des rectangles mais je ne sais pas comment m'y prendre pour les cercles

    Voici ce que nous avons fait en cours pour créer un rectangle :

    Nous avons défini une classe abstraite avec les critères communs à toutes les formes, puis nous avons étendu cette classe avec une classe rectangle. Ensuite, dans une classe Canvas, nous avons utilisé l'interface MouseListener et PaintListener pour pouvoir dessiner les rectangles à la souris. J'aurais voulu réussir à faire une classe Cercle qui reprenne la logique de ma classe rectangle. Jen e vois pas trop comment aborder le problème

    La classe abstraite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package paintrcp.biz;
     
    import org.eclipse.swt.graphics.GC;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.graphics.RGB;
     
     
    public abstract class Shape {
    	private String name;
    	private RGB border = new RGB(0,0,0);
    	private RGB fill = new RGB(255,255,255);
     
    	public Shape(String name, Point begin, Point end, RGB border, RGB fill) {
    		setName(name);
    		setBounds(begin, end);
    		setBorder(border);
    		setFill(fill);	
    	}
     
    	public RGB getBorder() {
    		return border;
    	}
     
    	public void setBorder(RGB border) {
    		Colors.copy(this.border, border);
    	}
     
    	public RGB getFill() {
    		return fill;
    	}
     
    	public void setFill(RGB fill) {
    		Colors.copy(this.fill, fill);
    	}
     
    	public String getName() {
    		return this.name;
    	}
     
    	public void setName(String name) {
    		if(name.length()<2) {
    			throw new IllegalArgumentException("Name must have at least 2 characters");
    		}
    		this.name=name;
    	}
     
    	public void setBounds(Point begin, Point end) {
    		if(begin==null || end==null) {
    			throw new NullPointerException("begin and end cannot be null");
    		}
    		if(begin.equals(end)) {
    			throw new IllegalArgumentException("begin and end must be different");
    		}
    	}
     
    	public abstract void draw(GC gc);
    }
    La classe métier Rectangle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    package paintrcp.biz;
     
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.graphics.GC;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.graphics.RGB;
     
    public class Rectangle extends Shape {
     
    private org.eclipse.swt.graphics.Rectangle rect;
     
    	public Rectangle(String name, Point begin, Point end, RGB border, RGB fill) {
    		super(name, begin, end, border, fill);
    	}
     
    	@Override
    	public void draw(GC gc) {
    		gc.setBackground(new Color(gc.getDevice(), getFill()));
    		gc.setForeground(new Color(gc.getDevice(), getBorder()));
    		gc.fillRectangle(rect);
    		gc.drawRectangle(rect);
    	}
     
    	@Override
    	public void setBounds(Point begin, Point end) {
    		super.setBounds(begin, end);
    		rect = new org.eclipse.swt.graphics.Rectangle(
    				Math.min(begin.x,end.x),
    				Math.min(begin.y, end.y),
    				Math.abs(begin. x-end.x),
    				Math.abs(begin. y-end.y)
    			);
    	}
    }
    Merci pour votre aide

  2. #2
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Spoiler: si tu cherches dans le code du bundle org.eclipse.swt.examples, qui tu peux trouver sur le repo Git de SWT, alors tu y verras un "EllipseFigure.java" qui s'apparente beaucoup a ce qui est demande.
    Sinon, pour tracer des ovales/ellipses et cas particulier du cercle, tu peux utiliser gc.drawOval.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  3. #3
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Mickael, merci pour ta réponse

    En attendant, j'ai crée ceci mais le code est faux...mon problème est que ma méthode draw ne prend qu'un paramètre lors de sa déclaration dans la classe abstraite.

    Je suis au point mort...Merci pour l'info du git
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    package paintrcp.biz;
     
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.graphics.GC;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.graphics.RGB;
     
    public class Cercle extends Shape{
     
    	public Cercle(String name, Point begin, Point end, RGB border, RGB fill) {
    		super(name, begin, end, border, fill);
    	}
     
    	@Override
    	public void draw(GC gc, Point begin, Point end) {
    		gc.setBackground(new Color(gc.getDevice(), getFill()));
    		gc.setForeground(new Color(gc.getDevice(), getBorder()));
    		drawOval(begin.x,begin.y,end.x,end.y);
    		fillOval(begin.x,begin.y,end.x,end.y);
    	}
     
    	@Override
    	public void setBounds(Point begin, Point end) {
    		super.setBounds(begin, end);
    		cercle = new org.eclipse.swt.graphics.Rectangle(
    				Math.min(begin.x,end.x),
    				Math.min(begin.y, end.y),
    				Math.abs(begin. x-end.x),
    				Math.abs(begin. y-end.y)
    			);
    	}
    }
    Bonne soirée

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    En effet, la méthode draw() de la classe abstraite ne prend que le contexte graphique en paramètre, parce que la classe représente une forme qui connait sa position et sa taille (les bounds). Pas besoin donc de préciser en paramètre autre chose pour la dessiner. Et la déclaration de la méthode abstraite couplé au @override t'évite justement de faire autre chose.

    La méthode public void setBounds(Point begin, Point end) { est censé permettre justement de préciser ces bounds. Seulement, pour pouvoir les utiliser dans une autre méthode, en l’occurrence la méthode draw(), il faut les stocker dans la classe.

    Dans la classe Rectangle, c'est la variable rect qui stocke les bounds du rectangle. Dans la méthode setBounds() de Cercle tu tentes de stocker ces bounds dans la variable cercle, mais tu ne la déclares pas. Il suffit de le faire et de l'utiliser avec gc.fillOval() et gc.drawOval(). Attention à la façon d'utiliser les informations d'un rectangle (la variable cercle est du type rectangle) pour définir les coordonnées d'un cercle (ou ellipse). D'ailleurs, par ailleurs, il existe une api draw2d qui te donnera la possibilité de dessiner directement des formes (donc de stocker une forme directement adaptée (comme une ellipse) plutôt que de dessiner une ellipse à partir de données d'un rectangle).

    Attention à dessiner le contour après la forme "remplie", surtout si les couleurs sont différentes, sinon cette dernière va recouvrir en partie le contour.

    Attention également à disposer correctement les ressources en SWT. La classe Color est une ressource et doit être libérée par l'appel de la méthode dispose(). A chaque redessin, la méthode draw() va être appelée et deux nouvelles instances de Color vont être créée, ce qui réservera deux handle système. Ces handles étant limités, tu pourras avoir des soucis à un moment, surtout si ton programme plante. La classe ColorRegistry peut t'aider à gérer cette problématique.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Joël, merci d'avoir pris le temps de me donner une réponse aussi complète.

    Ta contribution a réellement été très précieuse...hier soir à force de bidouiller dans tous les sens, j'ai posté le bout de code sans la variable cercle en effet.
    Voici l'extrait de code retravaillé mais qui contient encore des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class Cercle extends Shape {
     
    	private org.eclipse.swt.graphics.Rectangle cercle;
    	private Point begin;
    	private Point end;
     
    	public Cercle(String name, Point begin, Point end, RGB border, RGB fill) {
    		super(name, begin, end, border, fill);
    	}
     
    	@Override
    	public void draw(GC gc) {
    		gc.setBackground(new Color(gc.getDevice(), getFill()));
    		gc.setForeground(new Color(gc.getDevice(), getBorder()));
    		gc.fillOval(begin.x, begin.y, end.x, end.y);
    		gc.drawOval(begin.x, begin.y, end.x, end.y);
                    //J'ai essayé ça aussi :
                    gc.fillOval(cercle);
    		gc.drawOval(cercle);
    	}
     
    	@Override
    	public void setBounds(Point begin, Point end) {
    		super.setBounds(begin, end);
    		cercle = new org.eclipse.swt.graphics.Rectangle(
    				Math.min(begin.x, end.x),
    				Math.min(begin.y, end.y),
    				Math.abs(begin.x-end.x),
    				Math.abs(begin. y-end.y)
    			);
    	}
    }
     
    	}
    Je viens de comprendre en effet que la classe Rectangle permet aussi de créer des cercles. Je me mélange aussi les pinceaux dans les paramètres

    Quand tu dis de faire attention à dessiner d'abord le contour, tu veux dire qu'il faut d'abord executer drawOval() avant fillOval() ?

    Merci enfin pour l'info concernant l'api. Je pense que, comme nous sommes des débutants qui débutent, le formateur a dû juger utile de passer par la classe Rectangle dans un premier temps, mais je mets de côté.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par olivier252 Voir le message
    Voici l'extrait de code retravaillé mais qui contient encore des erreurs :
    Oui, parce que tu utilises les deux attributs begin et end de la classe Cercle pour dessiner. Alors que ces variables ne sont pas affectées donc de valeur null.

    C'est la variable cercle qui sert à stocker les coordonnées du cercle donc c'est cette variable que tu dois référencer dans fillOval et drawOval. Tu peux bien sûr stocker les coordonnées dans begin et end au lieu de les stocker dans cercle, mais il faut être juste cohérent : utiliser la bonne variable et stocker dans la bonne variable.

    Tu étais un peu sur la voie en tentant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gc.fillOval(cercle);
    gc.drawOval(cercle);
    Mais ces deux méthodes ne prennent pas des org.eclipse.swt.graphics.Rectangle en paramètre, donc ça ne peut pas fonctionner. Ce qui est trompeur c'est que la méthode fillRectangle(Rectangle) existe effectivement en plus de fillRectangle(x,y,width,height). Normalement, si tu utilises un EDI, il devrait t'aider à voir que la méthode n'existe pas pour tel ou tel type de paramètre.

    Regarde la doc : fillOval (et drawOval) prend 4 int en paramètre, le x et y du point supérieur gauche, et les largeur et hauteur. Informations stockées dans cercle :

    • cercle.x stocke le x du point supérieur gauche du rectangle
    • cercle.y stocke le y du point supérieur gauche du rectangle
    • cercle.width stocke le width (largeur) du rectangle
    • cercle.height stocke le height (hauteur) du rectangle


    Il suffit donc de simplement utiliser ces informations comme paramètre de fillOval (et drawOval) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gc.fillOval(cercle.x, cercle.y, cercle.width, cercle.height);

    Citation Envoyé par olivier252 Voir le message
    Quand tu dis de faire attention à dessiner d'abord le contour, tu veux dire qu'il faut d'abord executer drawOval() avant fillOval() ?
    En fait je disais plutôt l'inverse : dessiner d'abord la forme "remplie" puis le contour, donc exécuter fillOval() avant drawOval() comme dans la classe paintrcp.biz.Rectangle d'ailleurs.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Joel,

    Merci (encore) pour ta réponse et surtout ta patience ! Je suis en cours ce matin, mais je vais travailler sur ta réponse ce soir et te faire un retour plus détaillé
    Bonne journée

  8. #8
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Du coup un petit retour comme prévu.

    J'ai pu travailler ta réponse (pas dur me diras-tu vu que tu m'as fourni la réponse). Je suis déçu de ne pas avoir trouvé tout seul alors que tu 'avais mis sur la voie...J'aurais au moins la capacité à comprendre mes erreurs grâce à toi :
    - Initialiser des objets de la classe Point à null
    - j'ai voulu utiliser les paramètres de la classe Point dans ma méthode draw() sans tenir compte des valeurs allouées par la méthode setBounds(), et toujours dans le chapitre de la confusion de paramètres, je n'avais pas fait attention que la classe rectangle prenait une hauteur et une largeur.
    Beaucoup d'incompréhensions au total...

    Cela étant, toujours dans mon esprit de débutant bidouilleur, j'ai tenté de remplacer la variable "cercle" par le mot clé "this" comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gc.drawOval(this.x, this.y, this.width, this.height);
    Dans mon raisonnement, l'objet this fait en effet référence à l'objet courant, et donc aurait pu se substituer à "cercle". J'ai évidement tout faux, peut-être sauras tu me dire pourquoi. Merci encore pour tes interventions sur mon sujet et du temps que tu y as consacré. Je mets le sujet en résolu

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par olivier252 Voir le message

    Cela étant, toujours dans mon esprit de débutant bidouilleur, j'ai tenté de remplacer la variable "cercle" par le mot clé "this" comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gc.drawOval(this.x, this.y, this.width, this.height);
    this désigne l'instance courante, donc un objet de classe Cercle. Il n'y a pas d'attribut x, y, width ou height dans cette classe, donc this.x, this.y, this.width et this.height n'ont aucun sens.


    Citation Envoyé par olivier252 Voir le message
    Dans mon raisonnement, l'objet this fait en effet référence à l'objet courant
    ,
    oui
    Citation Envoyé par olivier252 Voir le message
    et donc aurait pu se substituer à "cercle"
    donc non

    puisque cercle, c'est en fait this.cercle, donc ça ne peut pas être this, sauf si à un moment on avait fait this.cercle = this, ce qui n'est pas possible puisque this est du type Cercle alors que cercle du type Rectangle qui ne sont absolument pas compatibles (l'un n'est pas la spécialisation ou la généralisation de l'autre). En plus à quoi ça servirait qu'on stocke this dans cercle ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Ok, voilà matière à réviser sur ce script pour le week end. Je vais tenter de générer d'autre formes en guise d'entrainement. Bravo et merci pour ta pédagogie.
    Bon we

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] tracer des courbes avec des données dans plusieurs fichiers
    Par adila34 dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/06/2015, 20h51
  2. Tracer des cercles avec Tkinter
    Par XSquallX dans le forum Général Python
    Réponses: 4
    Dernier message: 07/04/2010, 15h34
  3. [fillOval]Tracer des cercles
    Par Fredo02 dans le forum 2D
    Réponses: 11
    Dernier message: 13/12/2006, 14h18
  4. tracer des graphes avec php
    Par estampille dans le forum Langage
    Réponses: 1
    Dernier message: 19/07/2006, 18h28
  5. [VB6] [Graphisme] Tracer un cercle avec pset
    Par bleuerouge dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/12/2002, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo