FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 13:26

» Compilateur FBPano
par Ouf_ca_passe Aujourd'hui à 12:25

» mise a jour calculatrice
par papydall Aujourd'hui à 2:01

» double guillemets "" dans un EDIT
par Marc Hier à 23:43

» Documentation de KGF
par Klaus Lun 20 Nov 2017 - 22:52

» Zoom sur une portion d'écran
par JL35 Lun 20 Nov 2017 - 21:51

» Recherche d'une expression dans un source
par Marc Lun 20 Nov 2017 - 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 17 Nov 2017 - 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 KGF_dll - nouvelles versions

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1 ... 7 ... 10, 11, 12 ... 16  Suivant
AuteurMessage
Minibug

avatar

Nombre de messages : 2364
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 1 Mai 2017 - 23:54

Merci pour ta réponse Klaus.

Je croyait bêtement que tout se passé par le handle de l'objet Synedit et donc qu'il suffisait de prendre le handle pour utiliser les fonctions de KGF. Suspect

Dommage, ça aurait donné des possibilités intéressantes ! Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 2 Mai 2017 - 2:06

Nouvelle version:
KGF.dll V7.56 du 01/05/2017

Nouveautés:
- suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités)
- SyneditFunction: nouveau code 44 - positionner la ligne par% en première ligne affichée
- SyneditConfigureHighlighter: possibiité de donner les couleurs dous forme de $BBGGRR en hexa


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

On peur spécifier la couleur, par exemple pour les mots-clé, de la manière suivante:
Code:
couleur$ = "Bleu"
res% = dll_call4("SyneditConfigureHighlighter",SE%,4,adr(couleur$))
ou
Code:
couleur$ = "$FF0000"
res% = dll_call4("SyneditConfigureHighlighter",SE%,4,adr(couleur$))
Ces deux appels sont équivalents.

Le code 44 de SyneditFunction permet de "scroller" le texte d'une fenêtre Synedit de sorte que la ligne par% soir la première ligne affichée (si c'est possible):
Code:
positionner la ligne 2035 en haut de la fenêtre d'affichage
  lig% = dll_call3("SyneditFunction",SE%,44,2035)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 2 Mai 2017 - 3:14

Il est un peu tard pour que je teste tout cela maintenant mais
je charge la dll et promis je regarderai demain, enfin tout à l' heure.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 2 Mai 2017 - 11:30

Nouvelle version:
KGF.dll V7.57 du 02/05/2017

Nouveautés:
- suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités)
- SyneditFunction: nouveau code 45 - retourner les résultats de recherche globale dans un mémo


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Le mémo peut être caché, mais doit avoir l'attribut BAR_BOTH. Si aucun résultat de recherche rapide n'est disponible, le mémo résultant sera vide. Chaque ligne de résultat a le format suivent:
n: text
n est le numéro de ligne
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 2 Mai 2017 - 16:08

Nouvelle version:
KGF.dll V7.58 du 02/05/2017

Nouveautés:
- suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités)
- SyneditFunction: nouveau code 46 - effectuer une recherche globale par programme


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Cette nouveauté comple une lacune dans la gestion des recherches globales. Jusqu'à la version précédente, on pouvait l'initier au clavier, en lançant une recherche et en cliquant intentionnellement sur le bouton "Chercher toutes les occurrences".

Maintenant, on peut effectuer cette fonction par programme, sans faire apparaître la liste des résultats à l'écran, mais ces résultats restent mémorisés jusqu'à la recherche globale suivante. Et on peut utiliser le code 45 pour récupérer les résultats dans un mémo (possiblement caché, voir la version précédente ci-dessus).

Si l'on utilise le code 46 avec par%=0, alors les résultats de la dernière recherche globale seront (ré)affichés. Pour effectuer une recherche globale par programme, il faut constituer un tableau d'entiers de 4 cellules dont l'adresse sera passée en paramètre. Ce tableau doit contenir les informations suivantes:
Code:
indice  utilisation
===============================================================
0        longueur du tableau (toujours 16)
1        adr(text$)    chaîne de caractères contenant le critère ou le masque
2        mode           0=normal (text$ est le critère)    1=spécial (text$ est le masque)
3        casse          0=normal (insensible à la casse)   1=sélectif (sensible à la casse)

Exemple de recherche du critère "opt$":
Code:
dim SearchParam%(3), SearchText$
SearchText$ = "opt$"
SearchParam%(0) = 16
SearchParam%(1) = adr(SearchText$)
SearchParam%(2) = 0
SearchParam%(3) = 0
res% = dll_call3("SyneditFunction",SE%(act%),46,adr(SearchParam%))

Exemple de recherche avec le masque "end_*" (trouve simutanément end_sub, end_while, end_select):
Code:
dim SearchParam%(3), SearchText$
SearchText$ = "end_*"
SearchParam%(0) = 16
SearchParam%(1) = adr(SearchText$)
SearchParam%(2) = 1
SearchParam%(3) = 0
res% = dll_call3("SyneditFunction",SE%(act%),46,adr(SearchParam%))

Pour récupérer la liste des résultats:
Code:
memo 1234 : hide 1234 : bar_both 1234
...
res% = dll_call3("SyneditFunction",SE%(act%),45,handle(1234))
message "Nombre: "+str$(res%)+chr$(13)+chr$(10)+text$(1234)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 3 Mai 2017 - 1:52

Wahaou...

Je m' absente quelques heures et je suis à la ramasse... drunken
Bon, ben, je me met à jour et je vais essayer de mettre tout çà en application.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 3 Mai 2017 - 2:17

Je crois que ça va te plaire. Elles sont puissantes, ces possibilités !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

Nombre de messages : 2364
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 3 Mai 2017 - 7:42

Elle semblent rudement intéressantes toutes ses nouvelles fonctions Klaus...

Je suis passé à coté hier sans les remarquer ! confused

Je vais m'en servir dans GPP pour reprendre mon système perso de recherche et remplacement.
Ça simplifiera encore un peu le code. Merci. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 7 Mai 2017 - 22:05

Nouvelle version:
KGF.dll V7.59 du 07/05/2017

Nouveautés:
- suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités)
- suppression de la fonction CompilePanoramicToEXE
- SearchStringInTextFile: suppression de CR LF en trop pour résultats dans Combo
ou List

Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 8 Mai 2017 - 2:51

Nouvelle version:
KGF.dll V7.60 du 09/05/2017

Nouveautés:
- suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités)
- nouvelle fonction: ExecuteWithPanoramicEditor


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Cette fonction réalkise le travail de l'utilitaire Lanceur_Panoramic_Editor.exe, disponible sur mon WebDav dans le dossier Outils\. Elle permet d'exécuter une programme source Panoramic directement via l'editeur Panoramic_Editor.exe, avec certaines options.

Voici une démo. Elle affiche un mémo dans lequel on peut saisir un code Panoramic (on pourrait prendre un objet Synedit à la place...). Le bouton "Lancer" exécute ce code via Panoramic_Editor, avec certaines options fixés dans le code. Voir la documentation, dans la section "Scripts avec Panoramic".
Code:
' test_ExecuteWithPanoramicEditor.bas

label lancer
dim res%, source$, larg%, haut%, att%, options%
source$ = "MonTest_ExecuteWithPanoramicEditor.bas"

memo 1 : full_space 1 : bar_both 1 : height 1,height(1)-30
button 2 : top 2,height(1)+2 : left 2,30 : caption 2,"Lancer" : on_click 2,lancer
if file_exists(source$)=1 then file_load 1,source$

dll_on "KGF.dll"

end

lancer:
  if file_exists(source$)=1 then file_delete source$
  file_save 1,source$

  ' options: OR binaire de:  1=RUN  2=STAY  4=DEBUG
  options% = 1 : '  + 4 si l'on veut des messages de traçage...
  larg% = -1
  haut% = -1
  att% = 3000
  res% = dll_call5("ExecuteWithPanoramicEditor",adr(source$),larg%,haut%,att%,options%)
  message "Résultat: "+str$(res%)
  return

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Jeu 11 Mai 2017 - 13:01

Nouvelle version:
KGF.dll V7.61 du 11/05/2017

Nouveautés:
- fin de restructuration générale (purement technique, sans incidence sur les fonctionnalités)
- ExecuteWithPanoramicEditor: gérer correctement les noms longs pour le fichier source


Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 16 Mai 2017 - 13:12

Nouvelle version:
KGF.dll V7.62 du 16/05/2017

Nouveautés:
- ExecuteWithPanoramicEditor: adaptation à la dernière version de Panoramic_Editor du 15/5/2017: retirer me ".bas" du nom du process lancé

Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 19 Mai 2017 - 2:00

Nouvelle version:
KGF.dll V7.63 du 18/05/2017

Nouveautés:
- nouvel objet: SpiderWeb

Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

Ce nouvel objet permet d'afficher (et d'enregistrer !) une nouvelle forme d'histogramme, en forme de toile d'araignée. Elle sert à afficher une ou plusieurs séries de valeurs d'un même nombre d'éléments, afin de les comparer. Les valeurs sont des pourcentages (dans l'intervalle [0..100]) sous forme de nombres entiers. Voici à quoi ça ressemble:


Et voici le programme qui produit cela:
Code:
' test_SpiderWeb.bas

label creer, supprimer, versfichier, versclip
dim res%, SW%, m1%, s$, serie1%(4), serie2%(4), ID1%, ID2%
m1% = -1
serie1%(0) =  80
serie1%(1) =  75
serie1%(2) = 100
serie1%(3) =  50
serie1%(4) = 100
serie2%(0) =  90
serie2%(1) = 100
serie2%(2) = 100
serie2%(3) =  86
serie2%(4) =  65

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer
button 2 : top 2,35 : left 2,10 : caption 2,"Supprimer" : on_click 2,supprimer
button 3 : top 3,10 : left 3,110 : width 3,100 : caption 3,"==> Fichier" : on_click 3,versfichier
button 4 : top 4,35 : left 4,110 : width 4,100 : caption 4,"==> Presse-Papier" : on_click 4,versclip

save_dialog 11

end

creer:
  ' créer l'objet SpiderWeb, retourner l'identifiant dans SW%
  SW% = dll_call4("CreateSpiderWeb",handle(0),192,214,255)
      ' faire un FULL_SPACE du SW%
      '  res% = dll_call6("SpiderWebGeometry",SW%,1,m1%,m1%,m1%,m1%)
  ' donner les dimensions du SW%
  res% = dll_call6("SpiderWebGeometry",SW%,1,10,60,450,500)
  ' définir le nombre d'axes
  res% = dll_call2("SpiderWebAxisCount",SW%,5)
      ' retourner le nombre d'axes définis
      '  res% = dll_call2("SpiderWebAxisCount",SW%,0)
 
  ' définir les libellés des axes
  s$ = "Vitesse"
  res% = dll_call4("SpiderWebAxisLabel",SW%,0,1,adr(s$))
  s$ = "Taille"
  res% = dll_call4("SpiderWebAxisLabel",SW%,0,2,adr(s$))
  s$ = "Volume"
  res% = dll_call4("SpiderWebAxisLabel",SW%,0,3,adr(s$))
  s$ = "Facilité"
  res% = dll_call4("SpiderWebAxisLabel",SW%,0,4,adr(s$))
  s$ = "Clarté"
  res% = dll_call4("SpiderWebAxisLabel",SW%,0,5,adr(s$))

  ' définir deux séries de valeurs
  s$ = "Série 1"
  ID1% = dll_call4("SpiderWebSerie",SW%,5,adr(s$),adr(serie1%))
  s$ = "Série 2"
  ID2% = dll_call4("SpiderWebSerie",SW%,5,adr(s$),adr(serie2%))
 
  ' défnir les zones pour le graphisme et les légendes
  res% = dll_call6("SpiderWebArea",SW%,1,10,10,400,0)      : ' graphismes
  res% = dll_call6("SpiderWebArea",SW%,2,10,420,400,200)  : ' légendes
 
  ' définir épaisseurs de trait et couleurs des séries
  res% = dll_call6("SpiderWebSerieAttributes",SW%,1,2,255,0,0)
  res% = dll_call6("SpiderWebSerieAttributes",SW%,2,4,0,0,255)
 
  ' autoriser ou non les bordures (graphismes=oui, légendes=non)
  res% = dll_call3("SpiderWebBorders",SW%,1,0)
 
  ' afficher tout
  res% = dll_call2("SpiderWebUpdate",SW%,1)
 
  return
 
supprimer:
  SW% = dll_call1("DeleteSpiderWeb",SW%)
  return

versfichier:
  if SW%=0 then return
  filter 11,"Fichiers  image (BMP,JPG,PNG)|*.BMP;*.JPG;*.PNG"
  s$ = file_name$(11)
  if s$="_" then return
  if file_exists(s$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
    file_delete s$
  end_if
  res% = dll_call2("SpiderWebSaveToFile",SW%,adr(s$))
  if res%=0 then message "L'image est dans le fichier."
  return

versclip:
  if SW%=0 then return
  res% = dll_call2("SpiderWebSaveToFile",SW%,0)
  if res%=0 then message "L'image est dans le presse-papier."
  return

Avec la possibilité d'enregistrer l'mage dans un fichier BMP, JPG ou PNG, ou de copier l'image dans le presse-papier.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 21 Mai 2017 - 2:02

Nouvelle version:
KGF.dll V7.64 du 20/05/2017

Nouveautés:
- nouvel objet: Histogram

Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

Ce nouvel objet (qui pourra être étendu à de nouvelles fonctionnalités plus tard) implémente l'affichage d'histogrammes, selon un style paramétrable. Pour le moment, on a les styles Lignes, Barres 2D, Barred 3D et Cyindres. Chaque aspect est paramétrable (dimensions, couleurs, libellés, ...). On peut sauvegarder un tel graphisme dans le presse-papier ou dans un fichier BMP, JPG ou PNG. Avec l'objet SpiderWeb de la version précédente, on dispose maintenant d'un ensemble d'outils d'affichage de données numériques assez varié.

Voici un programme de démo. Il montre les mêmes données que celles de la démo du SpiderWeb de la version précédente, mais avec les 4 nouvelles présentations:
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), ID1%, ID2%, model%
m1% = -1
serie1%(0) =  80
serie1%(1) =  75
serie1%(2) = 100
serie1%(3) =  50
serie1%(4) = 100
serie2%(0) =  90
serie2%(1) = 100
serie2%(2) = 100
serie2%(3) =  86
serie2%(4) =  65

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer
button 2 : top 2,35 : left 2,10 : caption 2,"Supprimer" : on_click 2,supprimer
button 3 : top 3,10 : left 3,110 : width 3,100 : caption 3,"==> Fichier" : on_click 3,versfichier
button 4 : top 4,35 : left 4,110 : width 4,100 : caption 4,"==> Presse-Papier" : on_click 4,versclip

alpha 5 : top 5,10 : left 5,250 : caption 5,"Type d'Histogramme:"
combo 6 : top 6,36 : left 6,250 : width 6,100
  item_add 6,"Par lignes"
  item_add 6,"Par barres 2D"
  item_add 6,"Par barres 3D"
  item_add 6,"Par cylindres"
res% = dll_call2("SelectComboBoxItem",handle(6),1)

save_dialog 11

end

creer:
  if HG%<>0 then return
  model% = item_index(6)
  ' créer l'objet Histogram, retourner l'identifiant dans HG%, type Model%
  HG% = dll_call6("CreateHistogram",handle(0),192,214,255,model%,0)
  
      ' pour faire un FULL_SPACE du HG%
      '  res% = dll_call6("HistogramGeometry",HG%,1,m1%,m1%,m1%,m1%)
      
  ' donner les dimensions du HG%
  res% = dll_call6("HistogramGeometry",HG%,1,10,60,600,500)
  
  ' charger les libellés des axes
  s$ = "Action"
  res% = dll_call4("HistogramAxisLabel",HG%,0,1,adr(s$)) : ' abscisse
  s$ = "Résultat"
  res% = dll_call4("HistogramAxisLabel",HG%,0,2,adr(s$)) : ' ordonnée
  s$ = "Années"
  res% = dll_call4("HistogramAxisLabel",HG%,0,3,adr(s$)) : ' profondeur
  
  ' définir le nombre de points
  res% = dll_call2("HistogramPointCount",HG%,5)  
  
  ' défnir les zones pour le graphisme et les légendes
  res% = dll_call6("HistogramArea",HG%,1,10,10,550,400)    : ' graphismes
  res% = dll_call6("HistogramArea",HG%,2,10,420,400,200)   : ' légendes
  
  ' autoriser ou non les bordures (graphismes=oui, légendes=non)
  res% = dll_call3("HistogramBorders",HG%,1,0)

  ' définir deux séries de valeurs
  s$ = "Série 1"
  ID1% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie1%))
  s$ = "Série 2"
  ID2% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie2%))
  
  ' définir les libellés des points
  s$ = "Vitesse"
  res% = dll_call4("HistogramPointLabel",HG%,0,1,adr(s$))
  s$ = "Taille"
  res% = dll_call4("HistogramPointLabel",HG%,0,2,adr(s$))
  s$ = "Volume"
  res% = dll_call4("HistogramPointLabel",HG%,0,3,adr(s$))
  s$ = "Facilité"
  res% = dll_call4("HistogramPointLabel",HG%,0,4,adr(s$))
  s$ = "Clarté"
  res% = dll_call4("HistogramPointLabel",HG%,0,5,adr(s$))
  
  ' définir la géométrie des séries
  select item_index(6)
    case 1
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,0)   : ' pour "ligne"
    case 2
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "barre 2D"
    case 3
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "barre 3D"
    case 4
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "cylindre"
  end_select
  
  ' définir épaisseurs de trait et couleurs des séries
  res% = dll_call6("HistogramSerieAttributes",HG%,1,2,255,0,0)
  res% = dll_call6("HistogramSerieAttributes",HG%,2,4,0,0,255)
  

  ' afficher tout
  res% = dll_call2("HistogramUpdate",HG%,1)
  return
  
  return
  
supprimer:
  HG% = dll_call1("DeleteHistogram",HG%)
  return

versfichier:
  if HG%=0 then return
  filter 11,"Fichiers  image (BMP,JPG,PNG)|*.BMP;*.JPG;*.PNG"
  s$ = file_name$(11)
  if s$="_" then return
  if file_exists(s$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
    file_delete s$
  end_if
  res% = dll_call2("HistogramSaveToFile",HG%,adr(s$))
  if res%=0 then message "L'image est dans le fichier."
  return

versclip:
  if SW%=0 then return
  res% = dll_call2("HistogramSaveToFile",HG%,0)
  if res%=0 then message "L'image est dans le presse-papier."
  return

Et voici les résultats:
Type "Ligne":


Type "Barre 2D":


Type "Barre 3D":


Type "Cylindres":
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

Nombre de messages : 2364
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 21 Mai 2017 - 11:03

Très intéressant cet objet Klaus.

J'avais commençais il y a 2-3 ans, un programme englobant de nombreuses données dans la perspective de présenter plusieurs statistiques. Mais vue la complexité de l'affaire, je l'avais mis en stand-by. Voila un outil qui pourrait être bien utile... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Jicehel

avatar

Nombre de messages : 5860
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 21 Mai 2017 - 17:43

Dans les grand classiques, il te reste les camemberts et un truc qui s'appelle les diagrammes à bulles je crois qui fait des bulles des données en augmentant la taille du rond et les place en abscisses et en ordonnées selon certains critères (c'est le truc que j'ai vu en gestion de projets pour les prioriser et aider à prendre les décisions)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 21 Mai 2017 - 19:14

Très intéressant tout çà
Bravo Klaus.
cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 22 Mai 2017 - 17:49

Nouvelle version:
KGF.dll V7.65 du 22/05/2017

Nouveautés:
- CreateHistogram: nouveau modèle 5=Histogramme à bulles

Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

Ce type d'histogramme est particulier. Il a besoin d'exactement 3 séries de données. La première contient les valeurs de l'axe Y, la deuxième les valeurs de l'axe X, et la troisième la grosseur des bulles. Ce diagramme est souvent utilisé pour mettre en évidence une troisième variable corrélée aux deux premières séries, comme un écart-type, un pourcentage etc.

Voici le programme de démo, avec les 5 types d'histogramme (ligne, barre 2D, barre 3D, cylindre et bulles). On peut maintenant saisir des valeurs pour les deux séries. En cas de modèle "bulles", la troisième est calculée automatiquement par le programme de démo, en tant que pourcentage d'écart de la "réalisation" par rapport à la "présision". La plus petite bulle indique donc la réalisation collant le mieux aux prévisions.
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), serie3%(4)
dim ID1%, ID2%, ID3%, model%, i%
m1% = -1

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer
button 2 : top 2,35 : left 2,10 : caption 2,"Supprimer" : on_click 2,supprimer
button 3 : top 3,10 : left 3,110 : width 3,100 : caption 3,"==> Fichier" : on_click 3,versfichier
button 4 : top 4,35 : left 4,110 : width 4,100 : caption 4,"==> Presse-Papier" : on_click 4,versclip

alpha 5 : top 5,10 : left 5,250 : caption 5,"Type d'Histogramme:"
combo 6 : top 6,36 : left 6,250 : width 6,100
  item_add 6,"Par lignes"
  item_add 6,"Par barres 2D"
  item_add 6,"Par barres 3D"
  item_add 6,"Par cylindres"
  item_add 6,"A  Bulles"
res% = dll_call2("SelectComboBoxItem",handle(6),1)

save_dialog 11

alpha 20 : top 20,10 : left 20,700 : caption 20,"Série 1"
spin 21 : top 21,30 : left 21,700 : width 21,60 : min 21,0 : max 21,32000
spin 22 : top 22,50 : left 22,700 : width 22,60 : min 22,0 : max 22,32000
spin 23 : top 23,70 : left 23,700 : width 23,60 : min 23,0 : max 23,32000
spin 24 : top 24,90 : left 24,700 : width 24,60 : min 24,0 : max 24,32000
spin 25 : top 25,110 : left 25,700 : width 25,60 : min 25,0 : max 25,32000
position 21,80
position 22,75
position 23,100
position 24,50
position 25,100

alpha 30 : top 30,10 : left 30,800 : caption 30,"Série 2"
spin 31 : top 31,30 : left 31,800 : width 31,60 : min 31,0 : max 31,32000
spin 32 : top 32,50 : left 32,800 : width 32,60 : min 32,0 : max 32,32000
spin 33 : top 33,70 : left 33,800 : width 33,60 : min 33,0 : max 33,32000
spin 34 : top 34,90 : left 34,800 : width 34,60 : min 34,0 : max 34,32000
spin 35 : top 35,110 : left 35,800 : width 35,60 : min 35,0 : max 25,32000
position 31,90
position 32,100
position 33,100
position 34,86
position 35,65

end

creer:
  if HG%<>0 then return
    
  model% = item_index(6)
  for i%=0 to 4
    serie1%(i%) = position(21+i%)
    serie2%(i%) = position(31+i%)
  next i%
  if model%=5
    serie3%(0) = ((serie1%(0)-serie2%(0))*100)/serie2%(0)
    serie3%(1) = ((serie1%(1)-serie2%(1))*100)/serie2%(1)
    serie3%(2) = ((serie1%(2)-serie2%(2))*100)/serie2%(2)
    serie3%(3) = ((serie1%(3)-serie2%(3))*100)/serie2%(3)
    serie3%(4) = ((serie1%(4)-serie2%(4))*100)/serie2%(4)
  end_if
  
  ' créer l'objet Histogram, retourner l'identifiant dans HG%, type Model%
  HG% = dll_call6("CreateHistogram",handle(0),192,214,255,model%,0)
  
      ' pour faire un FULL_SPACE du HG%
      '  res% = dll_call6("HistogramGeometry",HG%,1,m1%,m1%,m1%,m1%)
      
  ' donner les dimensions du HG%
  res% = dll_call6("HistogramGeometry",HG%,1,10,60,600,500)
  
  ' charger les libellés des axes
  s$ = "Action"
  if model%=5 then s$ = "Prévision"
  res% = dll_call4("HistogramAxisLabel",HG%,0,1,adr(s$)) : ' abscisse
  s$ = "Résultat"
  if model%=5 then s$ = "Réalisation"
  res% = dll_call4("HistogramAxisLabel",HG%,0,2,adr(s$)) : ' ordonnée
  s$ = "Profondeur"
  if model%=5 then s$ = "Ecarts"
  res% = dll_call4("HistogramAxisLabel",HG%,0,3,adr(s$)) : ' profondeur
  
  ' définir le nombre de points
  res% = dll_call2("HistogramPointCount",HG%,5)  
  
  ' défnir les zones pour le graphisme et les légendes
  res% = dll_call6("HistogramArea",HG%,1,10,10,550,400)    : ' graphismes
  res% = dll_call6("HistogramArea",HG%,2,10,420,400,200)   : ' légendes
  
  ' autoriser ou non les bordures (graphismes=oui, légendes=non)
  res% = dll_call3("HistogramBorders",HG%,1,0)

  ' définir deux séries de valeurs
  s$ = "Réalisation"
  ID1% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie1%))
  s$ = "Prévision"
  ID2% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie2%))
  if model%=5     : ' type "Bulles"
    s$ = "Ecarts"
    ID3% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie3%))
  end_if
  
  ' définir les libellés des points
  s$ = "Vitesse"
  res% = dll_call4("HistogramPointLabel",HG%,0,1,adr(s$))
  s$ = "Taille"
  res% = dll_call4("HistogramPointLabel",HG%,0,2,adr(s$))
  s$ = "Volume"
  res% = dll_call4("HistogramPointLabel",HG%,0,3,adr(s$))
  s$ = "Facilité"
  res% = dll_call4("HistogramPointLabel",HG%,0,4,adr(s$))
  s$ = "Clarté"
  res% = dll_call4("HistogramPointLabel",HG%,0,5,adr(s$))
  
  ' définir la géométrie des séries
  select item_index(6)
    case 1
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,0)   : ' pour "ligne"
    case 2
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "barre 2D"
    case 3
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "barre 3D"
    case 4
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "cylindre"
    case 5
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "bulle"
  end_select
  
  ' définir épaisseurs de trait et couleurs des séries
  res% = dll_call6("HistogramSerieAttributes",HG%,1,2,255,0,0)
  res% = dll_call6("HistogramSerieAttributes",HG%,2,4,0,0,255)
  if model%=5     : ' type "Bulles"
    res% = dll_call6("HistogramSerieAttributes",HG%,3,4,255,255,0)
  end_if

  ' afficher tout
  res% = dll_call2("HistogramUpdate",HG%,1)
  return
  
  return
  
supprimer:
  HG% = dll_call1("DeleteHistogram",HG%)
  return

versfichier:
  if HG%=0 then return
  filter 11,"Fichiers  image (BMP,JPG,PNG)|*.BMP;*.JPG;*.PNG"
  s$ = file_name$(11)
  if s$="_" then return
  if file_exists(s$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
    file_delete s$
  end_if
  res% = dll_call2("HistogramSaveToFile",HG%,adr(s$))
  if res%=0 then message "L'image est dans le fichier."
  return

versclip:
  if SW%=0 then return
  res% = dll_call2("HistogramSaveToFile",HG%,0)
  if res%=0 then message "L'image est dans le presse-papier."
  return

Et voici le résultat:


Le rond noir à côté du libellé "Volume" indique une valeur "zéro" pour cet élément (réalisation conforme à la prévision). Or, on rond de rayon 0 ne serait pas visible. J'ai donc choisi de symboliser ce cas par un point noir.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5860
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 22 Mai 2017 - 23:28

Bravo Klaus
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 23 Mai 2017 - 1:53

Nouvelle version:
KGF.dll V7.66 du 23/05/2017

Nouveautés:
- CreateHistogram:
-- renumérotation des modèles
-- implémentation du modèle de nuage de points
-- renommage du modèle "Ligne" en "Ligne 2D"
-- création d'un modèle "Ligne 3D"


Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

On a maintenant les modèles suivants (hormis la "toile d'arraignée" qui est implémentée par l'objet SpiderWeb):
1 = nuage de points
2 = lignes 2D
3 = lignes 3D
4 = barres 2D
5 = barres 3D
6 = cylindres
7 = bulles


Voici le programme de démo. Un petit bouton "(1) -> (2)" a fait son apparition qui permet de copier automatiquement la série 1 dans la série 2.
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip, copier
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), serie3%(4)
dim ID1%, ID2%, ID3%, model%, i%, model_bulles%
m1% = -1
model_bulles% = 7

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer
button 2 : top 2,35 : left 2,10 : caption 2,"Supprimer" : on_click 2,supprimer
button 3 : top 3,10 : left 3,110 : width 3,100 : caption 3,"==> Fichier" : on_click 3,versfichier
button 4 : top 4,35 : left 4,110 : width 4,100 : caption 4,"==> Presse-Papier" : on_click 4,versclip

alpha 5 : top 5,10 : left 5,250 : caption 5,"Type d'Histogramme:"
combo 6 : top 6,36 : left 6,250 : width 6,100
  item_add 6,"Nuage de points"
  item_add 6,"Par lignes 2D"
  item_add 6,"Par lignes 3D"
  item_add 6,"Par barres 2D"
  item_add 6,"Par barres 3D"
  item_add 6,"Par cylindres"
  item_add 6,"A Bulles"
res% = dll_call2("SelectComboBoxItem",handle(6),1)

save_dialog 11

alpha 20 : top 20,10 : left 20,700 : caption 20,"Série 1"
spin 21 : top 21,30 : left 21,700 : width 21,60 : min 21,0 : max 21,32000
spin 22 : top 22,50 : left 22,700 : width 22,60 : min 22,0 : max 22,32000
spin 23 : top 23,70 : left 23,700 : width 23,60 : min 23,0 : max 23,32000
spin 24 : top 24,90 : left 24,700 : width 24,60 : min 24,0 : max 24,32000
spin 25 : top 25,110 : left 25,700 : width 25,60 : min 25,0 : max 25,32000
position 21,80
position 22,75
position 23,100
position 24,50
position 25,100

alpha 30 : top 30,10 : left 30,800 : caption 30,"Série 2"
spin 31 : top 31,30 : left 31,800 : width 31,60 : min 31,0 : max 31,32000
spin 32 : top 32,50 : left 32,800 : width 32,60 : min 32,0 : max 32,32000
spin 33 : top 33,70 : left 33,800 : width 33,60 : min 33,0 : max 33,32000
spin 34 : top 34,90 : left 34,800 : width 34,60 : min 34,0 : max 34,32000
spin 35 : top 35,110 : left 35,800 : width 35,60 : min 35,0 : max 25,32000
position 31,90
position 32,100
position 33,100
position 34,86
position 35,65

button 40 : top 40,140 : left 40,800 : caption 40,"(1) -> (2)" : : font_bold 40 : on_click 40,copier

end

creer:
  if HG%<>0 then return
    
  model% = item_index(6)
  for i%=0 to 4
    serie1%(i%) = position(21+i%)
    serie2%(i%) = position(31+i%)
  next i%
  if model%=model_bulles%
    serie3%(0) = ((serie1%(0)-serie2%(0))*100)/serie2%(0)
    serie3%(1) = ((serie1%(1)-serie2%(1))*100)/serie2%(1)
    serie3%(2) = ((serie1%(2)-serie2%(2))*100)/serie2%(2)
    serie3%(3) = ((serie1%(3)-serie2%(3))*100)/serie2%(3)
    serie3%(4) = ((serie1%(4)-serie2%(4))*100)/serie2%(4)
  end_if
  
  ' créer l'objet Histogram, retourner l'identifiant dans HG%, type Model%
  HG% = dll_call6("CreateHistogram",handle(0),192,214,255,model%,0)
  
      ' pour faire un FULL_SPACE du HG%
      '  res% = dll_call6("HistogramGeometry",HG%,1,m1%,m1%,m1%,m1%)
      
  ' donner les dimensions du HG%
  res% = dll_call6("HistogramGeometry",HG%,1,10,60,600,500)
  
  ' charger les libellés des axes
  s$ = "Action"
  if model%=model_bulles% then s$ = "Prévision"
  res% = dll_call4("HistogramAxisLabel",HG%,0,1,adr(s$)) : ' abscisse
  s$ = "Résultat"
  if model%=model_bulles% then s$ = "Réalisation"
  res% = dll_call4("HistogramAxisLabel",HG%,0,2,adr(s$)) : ' ordonnée
  s$ = "Profondeur"
  if model%=model_bulles% then s$ = "Ecarts"
  res% = dll_call4("HistogramAxisLabel",HG%,0,3,adr(s$)) : ' profondeur
  
  ' définir le nombre de points
  res% = dll_call2("HistogramPointCount",HG%,5)  
  
  ' défnir les zones pour le graphisme et les légendes
  res% = dll_call6("HistogramArea",HG%,1,10,10,550,400)    : ' graphismes
  res% = dll_call6("HistogramArea",HG%,2,10,420,400,200)   : ' légendes
  
  ' autoriser ou non les bordures (graphismes=oui, légendes=non)
  res% = dll_call3("HistogramBorders",HG%,1,0)

  ' définir deux séries de valeurs
  s$ = "Réalisation"
  ID1% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie1%))
  s$ = "Prévision"
  ID2% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie2%))
  if model%=model_bulles%     : ' type "Bulles"
    s$ = "Ecarts"
    ID3% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie3%))
  end_if
  
  ' définir les libellés des points
  s$ = "Vitesse"
  res% = dll_call4("HistogramPointLabel",HG%,0,1,adr(s$))
  s$ = "Taille"
  res% = dll_call4("HistogramPointLabel",HG%,0,2,adr(s$))
  s$ = "Volume"
  res% = dll_call4("HistogramPointLabel",HG%,0,3,adr(s$))
  s$ = "Facilité"
  res% = dll_call4("HistogramPointLabel",HG%,0,4,adr(s$))
  s$ = "Clarté"
  res% = dll_call4("HistogramPointLabel",HG%,0,5,adr(s$))
  
  ' définir la géométrie des séries
  select item_index(6)
    case 1
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,0)   : ' pour "points"
    case 2
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,0)   : ' pour "ligne"
    case 3
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,25)   : ' pour "ligne"
    case 4
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "barre 2D"
    case 5
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "barre 3D"
    case 6
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "cylindre"
    case 7
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "bulle"
  end_select
  
  ' définir épaisseurs de trait et couleurs des séries
  res% = dll_call6("HistogramSerieAttributes",HG%,1,2,255,0,0)
  res% = dll_call6("HistogramSerieAttributes",HG%,2,4,0,0,255)
  if model%=model_bulles%     : ' type "Bulles"
    res% = dll_call6("HistogramSerieAttributes",HG%,3,4,255,255,0)
  end_if

  ' afficher tout
  res% = dll_call2("HistogramUpdate",HG%,1)
  return
  
  return
  
supprimer:
  HG% = dll_call1("DeleteHistogram",HG%)
  return

versfichier:
  if HG%=0 then return
  filter 11,"Fichiers  image (BMP,JPG,PNG)|*.BMP;*.JPG;*.PNG"
  s$ = file_name$(11)
  if s$="_" then return
  if file_exists(s$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
    file_delete s$
  end_if
  res% = dll_call2("HistogramSaveToFile",HG%,adr(s$))
  if res%=0 then message "L'image est dans le fichier."
  return

versclip:
  if SW%=0 then return
  res% = dll_call2("HistogramSaveToFile",HG%,0)
  if res%=0 then message "L'image est dans le presse-papier."
  return

copier:
  for i%=0 to 4
    position 31+i%,position(21+i%)
  next i%
  return

Nuage de points:


Lignes 3D:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

Nombre de messages : 2364
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 23 Mai 2017 - 7:58

Alors là ça devient carrément pro !
Bravo Klaus. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 23 Mai 2017 - 13:39

A jour !
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 24 Mai 2017 - 11:57

Nouvelle version:
KGF.dll V7.67 du 24/05/2017

Nouveautés:
- CreateHistogram:
-- nouveau modèle: Camembert 2D


Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

On a maintenant les modèles suivants (hormis la "toile d'arraignée" qui est implémentée par l'objet SpiderWeb):
1 = nuage de points
2 = lignes 2D
3 = lignes 3D
4 = barres 2D
5 = barres 3D
6 = cylindres
7 = bulles
8 = camembert 2D


Une seule série de valeurs est à créer. On indique aussi les couleurs pour chaque valeur dans la série. Optionnellement, on peut mettre un segment en valeur en le décentrant légèrement.

Voici le programme de démo:
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip, copier
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), serie3%(4), colors%(4)
dim ID1%, ID2%, ID3%, model%, i%, model_bulles%, model_camembert%
m1% = -1
model_bulles% = 7
model_camembert% = 8

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer
button 2 : top 2,35 : left 2,10 : caption 2,"Supprimer" : on_click 2,supprimer
button 3 : top 3,10 : left 3,110 : width 3,100 : caption 3,"==> Fichier" : on_click 3,versfichier
button 4 : top 4,35 : left 4,110 : width 4,100 : caption 4,"==> Presse-Papier" : on_click 4,versclip

alpha 5 : top 5,10 : left 5,250 : caption 5,"Type d'Histogramme:"
combo 6 : top 6,36 : left 6,250 : width 6,110
  item_add 6,"Nuage de points"
  item_add 6,"Par lignes 2D"
  item_add 6,"Par lignes 3D"
  item_add 6,"Par barres 2D"
  item_add 6,"Par barres 3D"
  item_add 6,"Par cylindres"
  item_add 6,"A Bulles"
  item_add 6,"Camembert"
res% = dll_call2("SelectComboBoxItem",handle(6),1)

save_dialog 11

alpha 20 : top 20,10 : left 20,700 : caption 20,"Série 1"
spin 21 : top 21,30 : left 21,700 : width 21,60 : min 21,0 : max 21,32000
spin 22 : top 22,50 : left 22,700 : width 22,60 : min 22,0 : max 22,32000
spin 23 : top 23,70 : left 23,700 : width 23,60 : min 23,0 : max 23,32000
spin 24 : top 24,90 : left 24,700 : width 24,60 : min 24,0 : max 24,32000
spin 25 : top 25,110 : left 25,700 : width 25,60 : min 25,0 : max 25,32000
position 21,80
position 22,75
position 23,100
position 24,50
position 25,100

alpha 30 : top 30,10 : left 30,800 : caption 30,"Série 2"
spin 31 : top 31,30 : left 31,800 : width 31,60 : min 31,0 : max 31,32000
spin 32 : top 32,50 : left 32,800 : width 32,60 : min 32,0 : max 32,32000
spin 33 : top 33,70 : left 33,800 : width 33,60 : min 33,0 : max 33,32000
spin 34 : top 34,90 : left 34,800 : width 34,60 : min 34,0 : max 34,32000
spin 35 : top 35,110 : left 35,800 : width 35,60 : min 35,0 : max 25,32000
position 31,90
position 32,100
position 33,100
position 34,86
position 35,65

button 40 : top 40,140 : left 40,800 : caption 40,"(1) -> (2)" : : font_bold 40 : on_click 40,copier

end

creer:
  if HG%<>0 then return
    
  model% = item_index(6)
  for i%=0 to 4
    serie1%(i%) = position(21+i%)
    serie2%(i%) = position(31+i%)
  next i%
  if model%=model_bulles%
    serie3%(0) = ((serie1%(0)-serie2%(0))*100)/serie2%(0)
    serie3%(1) = ((serie1%(1)-serie2%(1))*100)/serie2%(1)
    serie3%(2) = ((serie1%(2)-serie2%(2))*100)/serie2%(2)
    serie3%(3) = ((serie1%(3)-serie2%(3))*100)/serie2%(3)
    serie3%(4) = ((serie1%(4)-serie2%(4))*100)/serie2%(4)
  end_if
  
  if model%=model_camembert%
    colors%(0) = (255*256+  0)*256+  0
    colors%(1) = (  0*256+255)*256+  0
    colors%(2) = (  0*256+  0)*256+255
    colors%(3) = (  0*256+255)*256+255
    colors%(4) = (200*256+255)*256+200
  end_if
  
  ' créer l'objet Histogram, retourner l'identifiant dans HG%, type Model%
  HG% = dll_call6("CreateHistogram",handle(0),192,214,255,model%,0)
  
      ' pour faire un FULL_SPACE du HG%
      '  res% = dll_call6("HistogramGeometry",HG%,1,m1%,m1%,m1%,m1%)
      
  ' donner les dimensions du HG%
  res% = dll_call6("HistogramGeometry",HG%,1,10,60,600,500)
  
  ' charger les libellés des axes
  s$ = "Action"
  if model%=model_bulles% then s$ = "Prévision"
  res% = dll_call4("HistogramAxisLabel",HG%,0,1,adr(s$)) : ' abscisse
  s$ = "Résultat"
  if model%=model_bulles% then s$ = "Réalisation"
  res% = dll_call4("HistogramAxisLabel",HG%,0,2,adr(s$)) : ' ordonnée
  s$ = "Profondeur"
  if model%=model_bulles% then s$ = "Ecarts"
  res% = dll_call4("HistogramAxisLabel",HG%,0,3,adr(s$)) : ' profondeur
  
  ' définir le nombre de points
  res% = dll_call2("HistogramPointCount",HG%,5)  
  
  ' défnir les zones pour le graphisme et les légendes
  res% = dll_call6("HistogramArea",HG%,1,10,10,550,400)    : ' graphismes
  res% = dll_call6("HistogramArea",HG%,2,10,420,400,200)   : ' légendes
  
  ' autoriser ou non les bordures (graphismes=oui, légendes=non)
  res% = dll_call3("HistogramBorders",HG%,1,0)

  ' définir deux séries de valeurs
  if model%=model_camembert%
    s$ = "Réalisation"
    ID1% = dll_call5("HistogramPieSerie",HG%,5,adr(s$),adr(serie1%),adr(colors%))
    res% = dll_call2("HistogramHighlightPieSegment",HG%,2)
  else
    s$ = "Réalisation"
    ID1% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie1%))
    s$ = "Prévision"
    ID2% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie2%))
  end_if
  if model%=model_bulles%     : ' type "Bulles"
    s$ = "Ecarts"
    ID3% = dll_call4("HistogramSerie",HG%,5,adr(s$),adr(serie3%))
  end_if
  
  ' définir les libellés des points
  s$ = "Vitesse"
  res% = dll_call4("HistogramPointLabel",HG%,0,1,adr(s$))
  s$ = "Taille"
  res% = dll_call4("HistogramPointLabel",HG%,0,2,adr(s$))
  s$ = "Volume"
  res% = dll_call4("HistogramPointLabel",HG%,0,3,adr(s$))
  s$ = "Facilité"
  res% = dll_call4("HistogramPointLabel",HG%,0,4,adr(s$))
  s$ = "Clarté"
  res% = dll_call4("HistogramPointLabel",HG%,0,5,adr(s$))
  
  ' définir la géométrie des séries
  select item_index(6)
    case 1
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,0)   : ' pour "points"
    case 2
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,0)   : ' pour "ligne"
    case 3
      res% = dll_call4("HistogramSerieGeometry",HG%,80,0,25)   : ' pour "ligne"
    case 4
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "barre 2D"
    case 5
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "barre 3D"
    case 6
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,0)  : ' pour "cylindre"
    case 7
      res% = dll_call4("HistogramSerieGeometry",HG%,80,25,25) : ' pour "bulle"
  end_select
  
  ' définir épaisseurs de trait et couleurs des séries
  res% = dll_call6("HistogramSerieAttributes",HG%,1,2,255,0,0)
  res% = dll_call6("HistogramSerieAttributes",HG%,2,4,0,0,255)
  if model%=model_bulles%     : ' type "Bulles"
    res% = dll_call6("HistogramSerieAttributes",HG%,3,4,255,255,0)
  end_if

  ' afficher tout
  res% = dll_call2("HistogramUpdate",HG%,1)
  return
  
  return
  
supprimer:
  HG% = dll_call1("DeleteHistogram",HG%)
  return

versfichier:
  if HG%=0 then return
  filter 11,"Fichiers  image (BMP,JPG,PNG)|*.BMP;*.JPG;*.PNG"
  s$ = file_name$(11)
  if s$="_" then return
  if file_exists(s$)=1
    if message_confirmation_yes_no("Ce fichier existe déjà. Remplacer ?")<>1 then return
    file_delete s$
  end_if
  res% = dll_call2("HistogramSaveToFile",HG%,adr(s$))
  if res%=0 then message "L'image est dans le fichier."
  return

versclip:
  if SW%=0 then return
  res% = dll_call2("HistogramSaveToFile",HG%,0)
  if res%=0 then message "L'image est dans le presse-papier."
  return

copier:
  for i%=0 to 4
    position 31+i%,position(21+i%)
  next i%
  return

Et le résultat pour un camembert dont de deuxième segment est mis en valeur:


Dernière édition par Klaus le Mer 24 Mai 2017 - 13:37, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 24 Mai 2017 - 12:02

cheers Bravo Klaus !

Maintenant qu' on a le fromage, il ne manque plus qu' un bout de pain...
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10128
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 24 Mai 2017 - 13:46

... et le vin rouge !

En tout cas, merci pour les fleurs !

Petite amélioration, sans changement de version:
dans le cas du camembert, le libellé du segment mis en valeur apparaît en gras et en italique, et son trait dans les légendes est plus épais (voir capture ci-dessus qui est actualisée).

EDIT

Ce qui est intéressant dans ces deux objets SpiderWeb et Histogram, c'est que je les ai implémentées intégralement KGF.dll contient déjà un aurte moyen de faire des histogrammes (voir ici), mais cela fait appel à un logiciel tiers freeware) que j'ai intégré. Les nouveaux objets sont entièrement écrits par moi et j'en ai donc la maîtrise totale.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: KGF_dll - nouvelles versions   

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 11 sur 16Aller à la page : Précédent  1 ... 7 ... 10, 11, 12 ... 16  Suivant
 Sujets similaires
-
» Nouvelles versions éditeur et firmware FR3X
» Nouvelles versions de TC et TP
» Nouvelles versions de TypViewer 4.015 et suivantes
» Deux nouvelles versions de la Porsche 911 (type 991)
» Dacia : La Success Story Continue Avec Quatre Nouvelles Versions Et Séries Limitées

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: