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

WinDev Discussion :

Des petits points ou croix sur un graphe


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut Des petits points ou croix sur un graphe
    Bonjour,

    je cherche à faire figurer des ronds ou des croix là où se trouvent mes points sur mon graphe de type courbe. Est-ce possible ? Je n'ai rien trouvé dans l'aide à ce sujet, il semblerait que ce soit possible sur un graphe de type nuage...

    Merci
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Dans la fenêtre de description du champ graphe, dans l'onglet "Séries", il y a des options pour la série, dont "Type de point" qui permet de choisir une forme.

    Après, je ne sais pas si c'est faisable par programmation (je n'ai pas cherché ).

    Cordialement

  3. #3
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Effectivement je vois l'option "Type de point" mais elle est grisée vu que je renseigne mon graphe par programmation... Et au niveau de l'API je n'ai pas vu de fonction qui s'apparente à ce que je recherche
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  4. #4
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Tant pi, je ferai sans croix ni points

    dans une future version peut-être
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  5. #5
    Membre actif
    Avatar de alexeyk
    Homme Profil pro
    test
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    De souvenir, il y a des exemples de dessin sur graphe.
    (peut-être dans une LST)

    Notamment j'avais vu un exemple iPad avec du texte clicable et des bulles qui avaient été ajoutés sur un champ graphe.

    Avec cette technique vous pouvez dessiner à peu près ce que vous voulez.
    Cherchez dans la base des exemples sinon contactez PC-Soft.

    Cordialement,

    Alex

    Citation Envoyé par bvadam Voir le message
    Tant pi, je ferai sans croix ni points

    dans une future version peut-être

  6. #6
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Bonjour

    alexeyk à raison on peut dessiner sur un graphe

    Ci-après une procédure qui permet de placer les points d'une série
    On a même le choix du type de point, cercle, triangle, carre ou image

    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
    PROCEDURE Point_sur_serie(sNom_Graphe,nNo_Serie,sType_Point,nPoint_Taille,nPoint_Couleur_fond,nPoint_Couleur_Trait,sNom_Image)
     
    i est un entier
    nPoint_x, nPoint_y sont des entiers
     
    // pour source de données est définie par programmation
    sListe_valeur est une chaîne = {sNom_Graphe}[nNo_Serie]..SourceDescription
    nNb_valeur est un entier = ChaîneOccurrence(sListe_valeur,";") + 1
     
    // pour le type de point "Triangle"
    nPoint_Hauteur est un entier = Racine(Puissance(nPoint_Taille,2)-Puissance(nPoint_Taille/2,2))
     
    // pour le type de point "Image"
    nLargeur_image est un entier
    nHauteur_image est un entier
    SI sNom_Image <> "" ALORS
    	nLargeur_image = {sNom_Image}..Largeur
    	nHauteur_image = {sNom_Image}..Hauteur
    FIN
     
    //dFinDessin({sNom_Graphe})
    dDébutDessin({sNom_Graphe},dSurGraphe)
    POUR i = 1 A nNb_valeur
    	nPoint_x = grInfoPoint({sNom_Graphe},grXCoordinate,nNo_Serie,i)
    	nPoint_y = grInfoPoint({sNom_Graphe},grYCoordinate,nNo_Serie,i)
     
    	SELON Majuscule(sType_Point)
    		CAS "CERCLE"
    			dCercle(nPoint_x-(nPoint_Taille/2),nPoint_y-(nPoint_Taille/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Taille/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "TRIANGLE"
    			dPolygone(3,nPoint_x-(nPoint_Taille/2),nPoint_y+(nPoint_Hauteur/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Hauteur/2),nPoint_x,nPoint_y-(nPoint_Hauteur/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "CARRE"
    			dRectangle(nPoint_x-(nPoint_Taille/2),nPoint_y-(nPoint_Taille/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Taille/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "IMAGE"
    			dCopieImage({sNom_Image},{sNom_Graphe},copieImage,0,0,nLargeur_image,nHauteur_image,nPoint_x-(nLargeur_image/2),nPoint_y-(nHauteur_image/2),nLargeur_image,nHauteur_image)
    	FIN
    FIN
    SI sNom_Image <> "" ALORS
    	grDessine({sNom_Graphe})
    FIN
    4 boutons de test des différents types de point

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sSerie est une chaîne = "20;10;60;80;20;100;45"
     
    dDébutDessin("GRF_Graphe",dSurGraphe)
    grSupprimeSérie("GRF_Graphe")
    grType("GRF_Graphe",grCourbe)
    grSourceSérie("GRF_Graphe",1,grProgrammation,sSerie)
    grDessine("GRF_Graphe")
     
    Point_sur_serie("GRF_Graphe",1,"Cercle",10,BleuClair,BleuClair,"")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sSerie est une chaîne = "20;10;60;80;20;100;45"
     
    dDébutDessin("GRF_Graphe",dSurGraphe)
    grSupprimeSérie("GRF_Graphe")
    grType("GRF_Graphe",grCourbe)
    grSourceSérie("GRF_Graphe",1,grProgrammation,sSerie)
    grDessine("GRF_Graphe")
     
    Point_sur_serie("GRF_Graphe",1,"Triangle",10,BleuClair,BleuClair,"")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sSerie est une chaîne = "20;10;60;80;20;100;45"
     
    dDébutDessin("GRF_Graphe",dSurGraphe)
    grSupprimeSérie("GRF_Graphe")
    grType("GRF_Graphe",grCourbe)
    grSourceSérie("GRF_Graphe",1,grProgrammation,sSerie)
    grDessine("GRF_Graphe")
     
    Point_sur_serie("GRF_Graphe",1,"Carre",10,BleuClair,BleuClair,"")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sSerie est une chaîne = "20;10;60;80;20;100;45"
     
    dDébutDessin("GRF_Graphe",dSurGraphe)
    grSupprimeSérie("GRF_Graphe")
    grType("GRF_Graphe",grCourbe)
    grSourceSérie("GRF_Graphe",1,grProgrammation,sSerie)
    grDessine("GRF_Graphe")
     
    Point_sur_serie("GRF_Graphe",1,"Image",0,0,0,"IMG_Point")
    Bon dev
    Laurent
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour laurent30s,

    j'ai lu ton message hier soir plein d'espoir de régler mon problème ce matin, mais non, erreur dans cette procédure.

    Voilà le code de ma procédure de dessin du graphe :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    PROCEDURE CalculGRAPHE()
     
    d1 est une Date = SAI_date_debut
    d2 est une Date = SAI_date_fin
     
    SI d1 <> "" ET d2 <> "" ALORS
     
    	ONG_onglets..Valeur = 1
     
    	nbjours est un entier = DateDifférence(d1, d2) + 1
     
    	extra est une chaîne = ""
    	SI LISTE_clients..Valeur = 0 OU LISTE_clients..Occurrence = 1 ALORS
    		extra = " AND clt_code LIKE '%" + SAI_filtre + "%'"
    	SINON
    		extra = " AND clt_id = " + LISTE_clients..Valeur
    	FIN
     
    	SI LISTE_articles..Valeur = 0 OU LISTE_articles..Occurrence = 1 ALORS
    		extra = extra + " AND art_reference LIKE '%" + SAI_filtre2 + "%'"
    	SINON
    		extra = extra + " AND art_id = " + LISTE_articles..Valeur
    	FIN
     
    	Sql est une chaîne
    	Rs est une Source de Données
    	qte est un réel
    	chiffre est un réel
    	etiquette est une chaîne
     
    	chiffre_max est un numérique
    	qte_max est un numérique
     
    	// RECHERCHE DES LIMITES DU GRAPHE
    	Sql = "SELECT max(chiffre) AS chiffre_max, max(qte) AS qte_max FROM " + ...
    				"(SELECT sum(bl_qte_livree * bl_prix) AS chiffre, sum(bl_qte_livree) AS qte FROM cc, clt, ccl, art, bl " + ...
    				"WHERE bl_date >= '" + DateVersChaîne(d1) + "' AND bl_date <= '" + DateVersChaîne(d2) + "' AND cc_id = ccl_cc_id AND cc_client = clt_id AND ccl_article_id = art_id AND bl_cc_id = cc_id AND bl_ccl = ccl_ligne " + ...
    				" AND bl_cc_id = ccl_cc_id " + extra + " GROUP BY bl_date) AS a"
     
    	SI PAS HExécuteRequêteSQL(Rs,Cnx,hRequêteSansCorrection ,Sql) ALORS
    		Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
    		RETOUR 
    	FIN
    	HLitPremier(Rs)
    	chiffre_max = Rs.chiffre_max * (100 / 95)
    	SI chiffre_max = 0 ALORS chiffre_max = 105000
    	qte_max = Rs.qte_max * (100 / 95)
    	SI qte_max = 0 ALORS qte_max = 1000
    	qte_max = qte_max * 2
     
     
     
    	grSupprimeTout(GRF_graphe)
    	TableSupprimeTout(TABLE_DATAS)
     
    	grSérieAxeSecondaire(GRF_graphe, 1, Vrai)
    	grOrigine(GRF_graphe, 1, nbjours, grAbscisse)
    	grOrigine(GRF_graphe, 0, chiffre_max, grOrdonnée)
    	grOrigine(GRF_graphe, 0, qte_max, grOrdonnéeSecondaire)
    	grEpaisseurTrait(GRF_graphe,grToutesSéries, 2)
    	grEtiquetteSérie(GRF_graphe, 1, "QTE")
    	grCouleurSérie(GRF_graphe,1, RVB(21,98,164))
    	grEtiquetteSérie(GRF_graphe, 2, "CA")
    	grCouleurSérie(GRF_graphe,2, RVB(0,0,100))
     
    	i est un entier = 1
    	d1 = SAI_date_debut
    	TANTQUE d1 <= d2 
     
    		Sql = "SELECT sum(bl_qte_livree) AS qte, sum(bl_qte_livree * bl_prix) AS chiffre FROM cc, clt, ccl, art, bl " + ...
    							"WHERE bl_date = '" + DateVersChaîne(d1) + "' AND cc_id = ccl_cc_id AND cc_client = clt_id AND ccl_article_id = art_id AND bl_cc_id = cc_id AND bl_ccl = ccl_ligne " + ...
    							" AND bl_cc_id = ccl_cc_id " + extra
    		SI PAS HExécuteRequêteSQL(Rs,Cnx,hRequêteSansCorrection ,Sql) ALORS
    			Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
    			RETOUR 
    		FIN
    		HLitPremier(Rs)
    		qte = Rs.qte
    		chiffre = Rs.chiffre
    		etiquette = DateVersChaîne(d1, "JJ/MM/AA")
     
    		grAjouteDonnée(GRF_graphe,1,i,qte)
    		grEtiquetteCatégorie(GRF_graphe,i,etiquette)
     
    		grAjouteDonnée(GRF_graphe,2,i,chiffre)
    		grEtiquetteCatégorie(GRF_graphe,i,etiquette)
     
    		TableAjouteLigne(TABLE_DATAS, d1, qte,chiffre)
     
    		d1..Jour += 1
    		i += 1
    	FIN
     
    	grDessine(GRF_graphe)
     
    	Point_sur_serie("GRF_graphe",1,"Cercle",10,BleuClair,BleuClair,"")
     
    FIN
    J'ai simplement appelé Point_sur_serie à la toute fin de ma procédure CalculGRAPHE, mais j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Erreur à la ligne 42 du traitement Procédure locale Point_sur_serie.
    Vous avez appelé la fonction grInfoPoint.
    Graphe non créé : utilisez grCrée.
     
    ----- Informations techniques -----
     
    Projet : gpao
     
    Appel WL :
    Traitement de 'Procédure locale Point_sur_serie' (FI_GRAPHE_VENTES.PROCEDURE.Point_sur_serie), ligne 42, thread 0
    Fonction 'grInfoPoint', syntaxe 0
     
    Que s'est-il passé ?
    Graphe non créé : utilisez grCrée.
    Pourtant le graphe est bien créé !
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  8. #8
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Bonjour

    Le problème vient que la procédure à besoin de connaître le nombre de valeurs dans la série.
    Perso j'ai l'habitude de concaténer les valeurs dans une variable chaine avant de faire un grSourceSérie. Et donc dans la procédure je détecte le nombre de valeurs contenues dans la série avant de poursuivre...

    Pour contourner le problème de la détection du nombre de valeur suivant le mode de remplissage j'ai ajouté le paramètre nNb_valeur à la procédure qui devient

    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
    PROCEDURE Point_sur_serie(sNom_Graphe,nNo_Serie,nNb_valeur,sType_Point,nPoint_Taille,nPoint_Couleur_fond,nPoint_Couleur_Trait,sNom_Image)
     
    i est un entier
    nPoint_x, nPoint_y sont des entiers
     
    // pour le type de point "Triangle"
    nPoint_Hauteur est un entier = Racine(Puissance(nPoint_Taille,2)-Puissance(nPoint_Taille/2,2))
     
    // pour le type de point "Image"
    nLargeur_image est un entier
    nHauteur_image est un entier
    SI sNom_Image <> "" ALORS
    	nLargeur_image = {sNom_Image}..Largeur
    	nHauteur_image = {sNom_Image}..Hauteur
    FIN
     
    //dFinDessin({sNom_Graphe})
    dDébutDessin({sNom_Graphe},dSurGraphe)
    POUR i = 1 A nNb_valeur
    	nPoint_x = grInfoPoint({sNom_Graphe},grXCoordinate,nNo_Serie,i)
    	nPoint_y = grInfoPoint({sNom_Graphe},grYCoordinate,nNo_Serie,i)
     
    	SELON Majuscule(sType_Point)
    		CAS "CERCLE"
    			dCercle(nPoint_x-(nPoint_Taille/2),nPoint_y-(nPoint_Taille/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Taille/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "TRIANGLE"
    			dPolygone(3,nPoint_x-(nPoint_Taille/2),nPoint_y+(nPoint_Hauteur/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Hauteur/2),nPoint_x,nPoint_y-(nPoint_Hauteur/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "CARRE"
    			dRectangle(nPoint_x-(nPoint_Taille/2),nPoint_y-(nPoint_Taille/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Taille/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "IMAGE"
    			dCopieImage({sNom_Image},{sNom_Graphe},copieImage,0,0,nLargeur_image,nHauteur_image,nPoint_x-(nLargeur_image/2),nPoint_y-(nHauteur_image/2),nLargeur_image,nHauteur_image)
    	FIN
    FIN
    SI sNom_Image <> "" ALORS
    	grDessine({sNom_Graphe})
    FIN
    si j'ai bien compris ton code l'incrémentation de i correspond au nombre de valeur - 1 (il y a une incrémentation de trop si je ne m'abuse).
    Dans ton code tu remplace la procédure au même endroit par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i -= 1
    Point_sur_serie("GRF_Graphe",1,i,"Cercle",10,BleuClair,BleuClair,"")
    dit moi si ça pose encore problème

    Bon dev
    Laurent
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  9. #9
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Arf non toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Erreur à la ligne 39 du traitement Procédure locale Point_sur_serie.
    Vous avez appelé la fonction grInfoPoint.
    Graphe non créé : utilisez grCrée.
     
    ----- Informations techniques -----
     
    Projet : gpao
     
    Appel WL :
    Traitement de 'Procédure locale Point_sur_serie' (FI_GRAPHE_VENTES.PROCEDURE.Point_sur_serie), ligne 39, thread 0
    Fonction 'grInfoPoint', syntaxe 0
     
    Que s'est-il passé ?
    Graphe non créé : utilisez grCrée.
    J'ai pas l'impression que le problème soit au niveau du nombre de valeurs dans la série, mais donc l'existence du graphe dans la procédure
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  10. #10
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    apparemment le pb est sur l'exécution de la fonction grInfoPoint
    donc le pb doit être sur un des paramètre càd :
    - le nom du graphe
    - le numéro de la série
    - l'indice de la valeur de la série (de 1 au nb de valeurs de la série)
    au moment de l'erreur demande à déboguer et regarde les valeurs des paramètres ci dessus il doit y en avoir une qui ne convient pas...

    Bon dev
    Laurent
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  11. #11
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Bonjour

    As-tu résolu ton problème ?
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  12. #12
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    non je n'ai pas creusé trop la question car je rencontre un soucis plus important à l'heure actuelle, mais j'y reviendrai.
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  13. #13
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ok je reprends mes investigations sur l'erreur :

    Je créé maintenant mon graphe par programmation donc plus d'erreur avec grCree, mais ça bloque au niveau de l'indirection {sNom_Graphe}.

    La procédure Point_sur_serie, juste le début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PROCEDURE Point_sur_serie(sNom_Graphe,nNo_Serie,sType_Point,nPoint_Taille,nPoint_Couleur_fond,nPoint_Couleur_Trait,sNom_Image)
     
    i est un entier
    nPoint_x, nPoint_y sont des entiers
     
    // pour source de données est définie par programmation
    sListe_valeur est une chaîne = {sNom_Graphe}[nNo_Serie]..SourceDescription
     
    RETOUR
    et ma fonction de construction du graphe, désolé pour la longueur :


    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    PROCEDURE REFRESH()
     
    d1 est une Date = SAI_date_debut
    d2 est une Date = SAI_date_fin
     
     
    SI d1 <> "" ET d2 <> "" ALORS
     
    	ONG_onglets..Valeur = 1
     
    	nbjours est un entier = DateDifférence(d1, d2) + 1
     
    	extra est une chaîne = ""
    	SI LISTE_clients..Valeur = 0 OU LISTE_clients..Occurrence = 1 ALORS
    		extra = " AND clt_code LIKE '%" + SAI_filtre + "%'"
    	SINON
    		extra = " AND clt_id = " + LISTE_clients..Valeur
    	FIN
     
    	SI LISTE_articles..Valeur = 0 OU LISTE_articles..Occurrence = 1 ALORS
    		extra = extra + " AND art_reference LIKE '%" + SAI_filtre2 + "%'"
    	SINON
    		extra = extra + " AND art_id = " + LISTE_articles..Valeur
    	FIN
     
    	Sql est une chaîne
    	Rs est une Source de Données
    	qte est un réel
    	chiffre est un réel
    	etiquette est une chaîne
     
    	chiffre_max est un numérique
    	qte_max est un numérique
     
    	// RECHERCHE DES LIMITES DU GRAPHE
    	Sql = "SELECT max(chiffre) AS chiffre_max, max(qte) AS qte_max FROM " + ...
    	"(SELECT sum(bl_qte_livree * bl_prix) AS chiffre, sum(bl_qte_livree) AS qte FROM cc, clt, ccl, art, bl " + ...
    	"WHERE bl_date >= '" + DateVersChaîne(d1) + "' AND bl_date <= '" + DateVersChaîne(d2) + "' AND cc_id = ccl_cc_id AND cc_client = clt_id AND ccl_article_id = art_id AND bl_cc_id = cc_id AND bl_ccl = ccl_ligne " + ...
    	" AND bl_cc_id = ccl_cc_id " + extra + " GROUP BY bl_date) AS a"
     
    	TableSupprimeTout(TABLE_DATAS)
     
    	SI PAS HExécuteRequêteSQL(Rs,Cnx,hRequêteSansCorrection ,Sql) ALORS
    		Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
    		RETOUR 
    	FIN
    	HLitPremier(Rs)
    	chiffre_max = Rs.chiffre_max * (100 / 95)
    	SI chiffre_max = 0 ALORS chiffre_max = 105000
    	qte_max = Rs.qte_max * (100 / 95)
    	SI qte_max = 0 ALORS qte_max = 1000
    	qte_max = qte_max * 2
     
    	IMG_image = ""
    	SI grExiste("MonGraphe") ALORS
    		grSupprimeTout("MonGraphe")
    	FIN
     
    	grCrée("MonGraphe", grAire)
    	grDestinationChamp("MonGraphe",IMG_image)
     
    	grSérieAxeSecondaire("MonGraphe", 1, Vrai)
    	grOrigine("MonGraphe", 1, nbjours, grAbscisse)
    	grOrigine("MonGraphe", 0, chiffre_max, grOrdonnée)
    	grOrigine("MonGraphe", 0, qte_max, grOrdonnéeSecondaire)
    	grEpaisseurTrait("MonGraphe",grToutesSéries, 2)
    	grEtiquetteSérie("MonGraphe", 1, "QTE")
    	grCouleurSérie("MonGraphe", 1, RVB(21,98,164))
    	grEtiquetteSérie("MonGraphe", 2, "CA")
    	grCouleurSérie("MonGraphe", 2, RVB(0,0,100))
     
    	i est un entier  = 1
    	d1 = SAI_date_debut
    	TANTQUE d1 <= d2 
     
    		Sql = "SELECT sum(bl_qte_livree) AS qte, sum(bl_qte_livree * bl_prix) AS chiffre FROM cc, clt, ccl, art, bl " + ...
    		"WHERE bl_date = '" + DateVersChaîne(d1) + "' AND cc_id = ccl_cc_id AND cc_client = clt_id AND ccl_article_id = art_id AND bl_cc_id = cc_id AND bl_ccl = ccl_ligne " + ...
    		" AND bl_cc_id = ccl_cc_id " + extra
    		SI PAS HExécuteRequêteSQL(Rs,Cnx,hRequêteSansCorrection ,Sql) ALORS
    			Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
    			RETOUR 
    		FIN
    		HLitPremier(Rs)
    		qte = Rs.qte
    		chiffre = Rs.chiffre
    		etiquette = DateVersChaîne(d1, "JJ/MM/AA")
     
    		grAjouteDonnée("MonGraphe",1,i,qte)
    		grEtiquetteCatégorie("MonGraphe",i,etiquette)
     
    		grAjouteDonnée("MonGraphe",2,i,chiffre)
    		grEtiquetteCatégorie("MonGraphe",i,etiquette)
     
    		TableAjouteLigne(TABLE_DATAS, d1, qte,chiffre)
     
    		d1..Jour += 1
    		i += 1
    	FIN
     
    	Point_sur_serie("MonGraphe",1,"Carre",2,RougeClair, RougeClair,"")
     
    	//Info({"MonGraphe"}..NomComplet)
     
    	grDessine("MonGraphe")
    	dDébutDessin(IMG_image)
     
    FIN
    Et l'erreur est la suivante :

    Erreur à la ligne 25 du traitement Procédure locale Point_sur_serie.
    L'élément 'MonGraphe' est inconnu.

    Pourquoi l'indirection ne fonctionne-t-elle pas ?
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  14. #14
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Bonjour

    Erreur à la ligne 25 du traitement Procédure locale Point_sur_serie.
    L'élément 'MonGraphe' est inconnu.
    L'erreur est à la ligne 25 de la Procédure locale Point_sur_serie mais celle que tu présentes n'en fait que 9.
    Elle ne doit pas être entière...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  15. #15
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Oui c'est curieux, il indique bien ligne 25, et quand je clique sur "debugger" l'erreur se trouve bien à cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sListe_valeur est une chaîne = {sNom_Graphe}[nNo_Serie]..SourceDescription
    ne pas se fier aux indications de ligne à mon avis
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  16. #16
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Dans l'aide de grCréation()

    Remarques :
    •Il est conseillé de créer directement un champ Graphe. En effet, le champ Graphe offre beaucoup plus de possibilités.
    •Cette fonction permet uniquement de créer un graphe par programmation. Cette fonction ne peut pas être utilisée dans l'éditeur de fenêtres, de pages ou d'états.
    Tu utilises un champ graphe c'est ce qui est recommandé
    C'est grCrée() qui cause l'erreur

    Il faut supprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grCrée("MonGraphe", grAire)
    tiens moi au courant...

    J'allais oublier, la taille a indiquer est en pixel, tu mets 2 ça fait très petit tu ne verras rien monte la au moins à 5
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  17. #17
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour Laurent,

    le problème c'est justement que si je passe par un champs Graphe dans ma fenêtre alors dans la procédure REFRESH il ne connait pas le graphe car il veut qu'il ait été créé par grCrée.....

    Donc en ce qui me concerne je dois oublier le champs graphe pré-créé dans la fenêtre. J'espère que la v18 corrige ce joyeux bordel autour des graphes
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  18. #18
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Bonjour

    Je n'avais pas vu que tu affiches ton graphe dans un champ image.

    Ma procédure n'était pas prévue pour, mais après une petite adaptation et l'ajout d'un paramètre pour indiquer le champ destination ça fonctionne...

    La procédure modifiée

    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
    PROCEDURE Point_sur_serie(sNom_Graphe,sNom_Champ_Destination,nNo_Serie,nNb_valeur,sType_Point,nPoint_Taille,nPoint_Couleur_fond,nPoint_Couleur_Trait,sNom_Image)
    i est un entier
    nPoint_x, nPoint_y sont des entiers
     
    // pour le type de point "Triangle"
    nPoint_Hauteur est un entier = Racine(Puissance(nPoint_Taille,2)-Puissance(nPoint_Taille/2,2))
     
    // pour le type de point "Image"
    nLargeur_image est un entier
    nHauteur_image est un entier
    SI sNom_Image <> "" ALORS
    	nLargeur_image = {sNom_Image}..Largeur
    	nHauteur_image = {sNom_Image}..Hauteur
    FIN
     
    dDébutDessin({sNom_Champ_Destination},dSurGraphe)
    POUR i = 1 A nNb_valeur
    	nPoint_x = grInfoPoint(""+sNom_Graphe+"",grXCoordinate,nNo_Serie,i)
    	nPoint_y = grInfoPoint(""+sNom_Graphe+"",grYCoordinate,nNo_Serie,i)
    	SELON Majuscule(sType_Point)
    		CAS "CERCLE"
    			dCercle(nPoint_x-(nPoint_Taille/2),nPoint_y-(nPoint_Taille/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Taille/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "TRIANGLE"
    			dPolygone(3,nPoint_x-(nPoint_Taille/2),nPoint_y+(nPoint_Hauteur/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Hauteur/2),nPoint_x,nPoint_y-(nPoint_Hauteur/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "CARRE"
    			dRectangle(nPoint_x-(nPoint_Taille/2),nPoint_y-(nPoint_Taille/2),nPoint_x+(nPoint_Taille/2),nPoint_y+(nPoint_Taille/2),nPoint_Couleur_fond,nPoint_Couleur_Trait)
    		CAS "IMAGE"
    			dCopieImage({sNom_Image},{sNom_Graphe},copieImage,0,0,nLargeur_image,nHauteur_image,nPoint_x-(nLargeur_image/2),nPoint_y-(nHauteur_image/2),nLargeur_image,nHauteur_image)
    	FIN
    FIN
    SI sNom_Image <> "" ALORS
    	grDessine({sNom_Champ_Destination})
    FIN
    L'appel de la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // pour l'affichage dans un champ image
    Point_sur_serie("MonGraphe","IMG_SansNom1",1,nNb_valeur,"Cercle",5,BleuClair,BleuClair,"")
     
    // pour l'affichage dans un champ graphe
    Point_sur_serie("GRF_SansNom1","GRF_SansNom1",1,nNb_valeur,"Cercle",5,BleuClair,BleuClair,"")
    quand à ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sListe_valeur est une chaîne = {sNom_Graphe}[nNo_Serie]..SourceDescription
    Il sert pour récupérer le nombre de valeurs dans la série
    Vu ton code j’initialiserais i à 0 et je ferais l'incrémentation en début de boucle plutôt qu'à la fin comme ça i te donne le nombre de valeur dans la(es) série(s)

    Courage t'y es presque
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  19. #19
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    je déterre ce sujet vieux de plus d'un an, mais c'était moi qui l'avait ouvert !

    Je continues la discussion parce que j'ai enfin réécrit toute mon appli jusqu'au point où j'en étais avant de perdre toutes mes sources

    Donc j'arrive à dessiner un graphe sur un champs image, la procedure de dessin est lancé au travers d'un thread, ce qui permet d'interragir avec les critères du graphe sans attendre qu'il ait fini de se dessiner.

    Par contre, j'en suis à intégrer la procédure Point_sur_serie, qui me positionne des petits spots de couleurs sur les points du graphe.

    Ca marche bien sauf sur ma deuxième série où l'échelle des ordonnées n'est pas la même que la première série (c'est l'échelle secondaire), du coup j'ai un décalage dans mon affichage, voyez plutôt :



    Comment je peux spécifier cette échelle dans l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nPoint_y = grInfoPoint(""+sNom_Graphe+"",grYCoordinate,nNo_Serie,i)
    Quand j'aurai reglé ce point, je me tournerai vers l'ajout d'info-bulle sur ces points, si toutefois c'est faisable.

    Si tu repasses dans le coin laurent30s, ou toute autre personne qui s'est déjà un peu pris la tête sur la question des graphes en v17, votre aide sera appréciable


    EDIT : actuellement j'ai réussi à gèrer le problème en introduisant un ratio entre les 2 échelles, et en diminuant ma valeur y en fonction de ce ratio :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    y0 est un numérique = grInfoPoint(""+sNom_Graphe+"",grYCoordinate,grAxeY,grMin)
    nPoint_y = y0 - ((y0 - nPoint_y) * nRatio)
    Ca fonctionne, mais il y a surement plus simple
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  20. #20
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Finalement ma solution va bien pour afficher des points, mais pour afficher les valeurs des séries, en respectant l'axe d'ordonnées secondaires, ça ne va pas.

    L'instruction grLibellé("MonGraphe",grAfficheValeur,Vrai) positionne les valeurs en se basant sur l'axe des ordonnées principal, donc quand j'ai une grande différence d'échelle entre les 2 axes (ordonnées principales de 0 à 100 000 et ordonnées secondaires de 0 à 1000) je me retrouve avec des valeurs rattatinées contre l'axe des abscisses)
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

Discussions similaires

  1. Petit point d'exclamation sur icone projet
    Par argoet dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 06/05/2015, 10h57
  2. [WD18] Curseur en croix sur un graphe boursier
    Par philippe30 dans le forum WinDev
    Réponses: 6
    Dernier message: 26/02/2015, 16h12
  3. supprimer des petits points
    Par totofe49 dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2011, 16h33
  4. Réponses: 3
    Dernier message: 09/04/2008, 14h24
  5. Compléter une ligne avec des petits points "à la word"
    Par polemoss dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/05/2007, 11h38

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