FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 11 Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
KGF_dll - nouvelles versions - Page 11 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 11 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 11 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 11 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 11 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
KGF_dll - nouvelles versions - Page 11 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 11 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
KGF_dll - nouvelles versions - Page 11 Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Display Star Wars Unlimited Ombres de la Galaxie : ...
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+12
JL35
Oscaribout
bignono
Pedro
pascal10000
silverman
Jicehel
papydall
Minibug
Marc
Yannick
Klaus
16 participants
Aller à la page : Précédent  1 ... 7 ... 10, 11, 12 ... 25 ... 40  Suivant
AuteurMessage
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 1 Mai 2017 - 22: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
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 2 Mai 2017 - 1: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 11 EmptyMar 2 Mai 2017 - 2: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
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 2 Mai 2017 - 10: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 2 Mai 2017 - 15: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 11 EmptyMer 3 Mai 2017 - 0: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
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMer 3 Mai 2017 - 1:17

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

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMer 3 Mai 2017 - 6: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
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyDim 7 Mai 2017 - 21: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 8 Mai 2017 - 1: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyJeu 11 Mai 2017 - 12: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 16 Mai 2017 - 12: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyVen 19 Mai 2017 - 1: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:
KGF_dll - nouvelles versions - Page 11 Aa135

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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyDim 21 Mai 2017 - 1: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":
KGF_dll - nouvelles versions - Page 11 Aa136

Type "Barre 2D":
KGF_dll - nouvelles versions - Page 11 Aa217

Type "Barre 3D":
KGF_dll - nouvelles versions - Page 11 Aa314

Type "Cylindres":
KGF_dll - nouvelles versions - Page 11 Aa411
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyDim 21 Mai 2017 - 10: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
http://gpp.panoramic.free.fr
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyDim 21 Mai 2017 - 16: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
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 11 EmptyDim 21 Mai 2017 - 18:14

Très intéressant tout çà
Bravo Klaus.
cheers
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 22 Mai 2017 - 16: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:
KGF_dll - nouvelles versions - Page 11 Aa137

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
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 22 Mai 2017 - 22:28

Bravo Klaus
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 23 Mai 2017 - 0: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:
KGF_dll - nouvelles versions - Page 11 Aa138

Lignes 3D:
KGF_dll - nouvelles versions - Page 11 Aa218
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 23 Mai 2017 - 6:58

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




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 11 EmptyMar 23 Mai 2017 - 12:39

A jour !
Laughing
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMer 24 Mai 2017 - 10: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:
KGF_dll - nouvelles versions - Page 11 Aa140


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




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 11 EmptyMer 24 Mai 2017 - 11: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
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMer 24 Mai 2017 - 12: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
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 11 sur 40Aller à la page : Précédent  1 ... 7 ... 10, 11, 12 ... 25 ... 40  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» version instantanée PANORAMIC V 0.9.25i6 du 14/12/2013

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: