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
» Détection connexion internet
par JL35 Aujourd'hui à 18:39

» Le parcours du cavalier sur un échiquier 8 x 8
par pascal10000 Hier à 13:26

» Casse-tête : Echanger les positions des cavaliers
par papydall Sam 22 Juil 2017 - 19:42

» Compilateur FBPano
par jean_debord Sam 22 Juil 2017 - 10:54

» demande pour recuperer un text speciale
par pascal10000 Ven 21 Juil 2017 - 22:04

» KGF_dll - nouvelles versions
par Klaus Ven 21 Juil 2017 - 14:29

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
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 ... 11, 12, 13, 14, 15  Suivant
AuteurMessage
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 27 Mai 2017 - 2:57

Nouvelle version:
KGF.dll V7.68 du 27/05/2017

Nouveautés:
- nouvelle fonction HistogramSetAlert: gérer des USER_EVENT pour un survom ou un clic dans un objet Histogram
- nouvelle fonction HistogramSetTrave: gérer le traçage du survol dans un objet Histogram


Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

Ceci représente un gros travail mais ajoute une possibilité très intéressante. En effet, de deux manières différentes, on peut obtenir des informations sur ce qui se passe avec la souris dans un Histogram. On peut l'utiliser pour afficher des informations dans une barre d'état, pour afficher dynamiquement des informations plus détaillées associées à une valeur survolée, par exemple, etc. Les utilisations sont multiples.

Voici le programme de démo. Lancez-le, choisissez un modèle d'histogramme, affichez-le et balladez le curseur dans l'histogramme. Ou cliquez dans une des zones colorées de l'histogramme.
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip, copier, alert
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), serie3%(4), colors%(4)
dim ID1%, ID2%, ID3%, model%, i%, model_bulles%, model_camembert%
dim A_WModul%, A_WType%, A_WModel%
dim A_LSerie%, A_LValeur%

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

alpha 99 : top 99,640 : left 99,10 : caption 99,"En attente..."
edit  98 : top 98,670 : left 98,10 : width 98,400 : inactive 98

on_user_event alert

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

  ' autoriser les alertes en clic et survol
  res% = dll_call4("HistogramSetAlert",HG%,handle(0),1,1)
 
  ' autoriser le traçage en survol
  res% = dll_call3("HistogramSetTrace",HG%,handle(98),1)
 
  ' 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
 
alert:
' caption 99,"LParam="+hex$(USER_EVENT_WPARAM)+"  WParam="+hex$(USER_EVENT_LPARAM)
 A_WModul%  = bin_and(USER_EVENT_LPARAM,hex("FF000000"))
 A_WType%  = bin_and(USER_EVENT_LPARAM,hex("00FF0000"))/65536
 A_WModel%  = bin_and(USER_EVENT_LPARAM,hex("0000FFFF"))
 A_LSerie%  = bin_and(USER_EVENT_WPARAM,hex("FFFF0000"))/65536
 A_LValeur% = bin_and(USER_EVENT_WPARAM,hex("0000FFFF"))
 if A_WModul%<>hex("02000000") then return    : ' pas un évènement Histogram ?
' caption 99,str$(A_WType%)+"  "+str$(A_WModel%)+"  "+str$(A_LSerie%)+"  "+str$(A_LValeur%)
 select A_WType%
  case 0:      ' exit
    caption 99,""
  case 1:      ' move
    s$ = "Move "
    select A_LSerie%
      case 1
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie1%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Réalisation"
      case 2
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie2%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Prévision"
      case 3
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie3%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Ecart"
    end_select
    s$ = s$ + "  modèle "+item_read$(6,A_WModel%)
    caption 99,s$   
  case 2:      ' click
    s$ = "Click "
    select A_LSerie%
      case 1
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie1%(A_LValeur%))
      case 2
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie2%(A_LValeur%))
      case 3
        s$ = s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie3%(A_LValeur%))
    end_select
    s$ = s$ + "  modèle "+item_read$(6,A_WModel%)
    s$ = s$ + "  série "+str$(A_LSerie%)
    caption 99,s$   
 end_select
 return

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

avatar

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

MessageSujet: re   Sam 27 Mai 2017 - 13:17

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

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 31 Mai 2017 - 4:06

Nouvelle version:
KGF.dll V7.69 du 28/05/2017

Nouveautés:
- objet Histogram:
-- normalisation de l'intervalle d'affichage en ordonnée (tenir compte des valeurs minimales et maximales des séries en ordonnée)
-- gérer des valeurs négatives (sauf pour les formats bulles et camembert)
-- afficher quelques repères numériques sur l'ordonnée
-- afficher l'abscisse en Y=0 si des valeurs négatives sont à afficher


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 : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 2 Juin 2017 - 1:00

Nouvelle version:
KGF.dll V7.7O du 31/05/2017

Nouveautés:
- objet Histogram:
-- normalisation de l'intervalle d'affichage en ordonnée (tenir compte des valeurs minimales et maximales des séries en ordonnée)
-- nouvelles fonctions HistogramBackground, HistogramTitle, HistogramTitleAttributes
-- nouveau code 3 (titre) pour la fonction HistogramArea
-- nouveau paramètre (AllowTitle%) pour la fonction HistogramBorders


Modules modifiés:
KGF.dll
KGF.dll


La doc et les sources sont à jour.

Ces nouveautés permettent:
- gérer une image de fond (fichier BMP)
- créer une aire de titre, avec le titre, sa police, sa taille et ses attributs graphiques

Voici le nouveau programme de démo qui gère tout cela:
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip, copier, alert, fond
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), serie3%(4), colors%(4)
dim ID1%, ID2%, ID3%, model%, i%, model_bulles%, model_camembert%, fond$
dim s1$
dim A_WModul%, A_WType%, A_WModel%, A_LSerie%, A_LValeur%

m1% = -1
model_bulles% = 7
model_camembert% = 8
fond$ = "_"

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
open_dialog 12

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-32000 : max 21,32000
spin 22 : top 22,50 : left 22,700 : width 22,60 : min 22,0-32000 : max 22,32000
spin 23 : top 23,70 : left 23,700 : width 23,60 : min 23,0-32000 : max 23,32000
spin 24 : top 24,90 : left 24,700 : width 24,60 : min 24,0-32000 : max 24,32000
spin 25 : top 25,110 : left 25,700 : width 25,60 : min 25,0-32000 : 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-32000 : max 31,32000
spin 32 : top 32,50 : left 32,800 : width 32,60 : min 32,0-32000 : max 32,32000
spin 33 : top 33,70 : left 33,800 : width 33,60 : min 33,0-32000 : max 33,32000
spin 34 : top 34,90 : left 34,800 : width 34,60 : min 34,0-32000 : max 34,32000
spin 35 : top 35,110 : left 35,800 : width 35,60 : min 35,0-32000 : max 35,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

button 41 : top 41,170 : left 41,800 : caption 41,"Fond d'image" : on_click 41,fond
picture 42 : top 42,200 : left 42,800 : width 42,360 : height 42,240 : stretch_on 42

alpha 43 : top 43,450 : left 43,800 : caption 43,"Titre:"
edit 44 : top 44,450 : left 44,850 : width 44,300 : text 44,"Démonstration"
alpha 45 : top 45,480 : left 45,800 : caption 45,"Police:"
Combo 46 : top 46,480 : left 46,850 : width 46,300 : font_names_load 46
for i%=1 to count(46)
  if item_read$(46,i%)="Arial" then exit_for
next i%
res% = dll_call2("SelectComboBoxItem",handle(46),i%)
alpha 47 : top 47,510 : left 47,800 : caption 47,"Taille:"
Combo 48 : top 48,510 : left 48,850 : width 48,40
  item_add 48,"8"
  item_add 48,"10"
  item_add 48,"12"
  item_add 48,"16"
  item_add 48,"20"
  item_add 48,"24"
res% = dll_call2("SelectComboBoxItem",handle(48),3)
check 50 : top 50,510 : left 50,930 : caption 50,"G" : font_bold 50
check 51 : top 51,510 : left 51,970 : caption 51,"I" : font_italic 51
check 52 : top 52,510 : left 52,1010 : caption 52,"S" : font_underline 52
check 53 : top 53,510 : left 53,1050 : caption 53,"B" : font_strike 53

alpha 99 : top 99,640 : left 99,10 : caption 99,"En attente..."
edit  98 : top 98,670 : left 98,10 : width 98,400 : inactive 98

on_user_event alert
                           
filter 12,"Fichier BMP|*.bmp"

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%
    if (serie2%(0)<1) or (serie2%(1)<1) or (serie2%(2)<1) or (serie2%(3)<1) or (serie2%(4)<1)
      message "Les valeurs de la série 2 doivent être >0 !"
      return
    end_if
    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)
 
  ' installer l'image de fond si nécessaire
  if fond$<>"_" then res% = dll_call2("HistogramBackground",HG%,adr(fond$))
 
  ' 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, les légendes et le titre
  res% = dll_call6("HistogramArea",HG%,1,10,10,550,400)    : ' graphismes
  res% = dll_call6("HistogramArea",HG%,2,10,420,400,200)  : ' légendes
  res% = dll_call6("HistogramArea",HG%,3,350,430,550,490)  : ' titre
 
  ' autoriser ou non les bordures (graphismes=oui, légendes=non, titre=oui)
  res% = dll_call4("HistogramBorders",HG%,1,0,1)
 
  ' charger le titre du histogramme
  s$ = text$(44)
  s1$ = text$(46)
  res% = dll_call3("HistogramTitle",HG%,adr(s$),adr(s1$))
 
  ' adapter les propriétés du titre
  res% = dll_call6("HistogramTitleAttributes",HG%,val(text$(48)),checked(50),checked(51),checked(52),checked(53))
  ' 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

  ' autoriser les alertes en clic et survol
  res% = dll_call4("HistogramSetAlert",HG%,handle(0),1,1)
 
  ' autoriser le traçage en survol
  res% = dll_call3("HistogramSetTrace",HG%,handle(98),1)
 
  ' 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
 
alert:
' caption 99,"LParam="+hex$(USER_EVENT_WPARAM)+"  WParam="+hex$(USER_EVENT_LPARAM)
 A_WModul%  = bin_and(USER_EVENT_LPARAM,hex("FF000000"))
 A_WType%  = bin_and(USER_EVENT_LPARAM,hex("00FF0000"))/65536
 A_WModel%  = bin_and(USER_EVENT_LPARAM,hex("0000FFFF"))
 A_LSerie%  = bin_and(USER_EVENT_WPARAM,hex("FFFF0000"))/65536
 A_LValeur% = bin_and(USER_EVENT_WPARAM,hex("0000FFFF"))
 if A_WModul%<>hex("02000000") then return    : ' pas un évènement Histogram ?
' caption 99,str$(A_WType%)+"  "+str$(A_WModel%)+"  "+str$(A_LSerie%)+"  "+str$(A_LValeur%)
 select A_WType%
  case 0:      ' exit
    caption 99,""
  case 1:      ' move
    s$ = "Move "
    select A_LSerie%
      case 1
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie1%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Réalisation"
      case 2
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie2%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Prévision"
      case 3
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie3%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Ecart"
    end_select
    s$ = s$ + "  modèle "+item_read$(6,A_WModel%)
    caption 99,s$   
  case 2:      ' click
    s$ = "Click "
    select A_LSerie%
      case 1
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie1%(A_LValeur%))
      case 2
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie2%(A_LValeur%))
      case 3
        s$ = s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie3%(A_LValeur%))
    end_select
    s$ = s$ + "  modèle "+item_read$(6,A_WModel%)
    s$ = s$ + "  série "+str$(A_LSerie%)
    caption 99,s$   
 end_select
 return

fond:
  fond$ = file_name$(12)
  if fond$<>"_"
    if file_exists(fond$)=0 then fond$ = "_"
    if fond$<>"_" then file_load 42,fond$
  end_if
  return

Et voici un exemple avec des barres 3D, 2 valeurs négatives et une valeur nulle, avec une image de fond et un titre:

et ses paramètres:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 2 Juin 2017 - 4:46

Je n'ai pas encore eu l'occasion de tester toutes ces nouvelles fonctions.
En tout cas bravo. On se croirai sous Word ou Excel. Super travail Klaus !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 2 Juin 2017 - 10:23

Merci ! Very Happy Very Happy Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 2 Juin 2017 - 11:29

@ Klaus,

Aurais tu changé le mot de passe de ton webdav ?...
J' ai droit à un wrong password avec celui en signature.
Suspect
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 2 Juin 2017 - 19:59

Non, je n'ai rien changé. J'y ai accès sous forme de WebDav, mais je ne peux pas non plus le connecter en tant que Panoramicien simple.

Mais tu peux toujours télécharger KGF.zip et KGF.hlp par les liens dans ma signature.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5456
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Ven 2 Juin 2017 - 20:24

Idem pour moi.:
 

J'ai entré le mot de passe : panoramic123

Remarque
le lien : KGF.dll (en format ZIP)
fonctionne parfaitement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Ven 2 Juin 2017 - 22:05

En cliquant sur le logo www j' ai atterri sur ton forum au lieu de ton site  Suspect
Je me suis inscrit mais j' attends toujours le mail... Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Sam 3 Juin 2017 - 0:11

Embarassed j' ai pas cliqué sur le bon www...
J' ai atterri sur le forum à Papydall. Laughing

Mais ton site est indisponible Klaus. Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 3 Juin 2017 - 2:11

Il y a un problème avec le "Site normal" - je le corrigerai.
Mais le "Site miroir" fonctionne parfaitement et contient exactement la même chose (comme son nom l'indique).
Et plus, le lien vers KGF.zip dans ma signature fonctionne normalement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Sam 3 Juin 2017 - 3:20

Oh miroir...mon beau miroir...

Ok Klaus, je vais lui demander si je suis beau...
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 3 Juin 2017 - 3:30

J'ai dû migrer mon site principal vers une nouvelle version du logiciel d'hébergement, chez le même hébergeur. La nouvelle adresse est:
https://klauspanoramic.000webhostapp.com/
Tous les liens sur la page Panoramic fonctionnent. Je ferai les autres dans les prochains jours.

Le lien vers le "Site normal" dans ma signature est corrigé.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 3 Juin 2017 - 9:58

Ce matin, mon "site normal" est bloqué à nouveau. Utilisez le "site miroir".
Ca fonctionne à nouveau !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 3 Juin 2017 - 20:36

Nouvelle version:
KGF.dll V7.71 du 03/06/2017

Nouveautés:
- objet Histogram: gestion correcte des valeurs négatives en série 3 pour le modèle "bulles"

Modules modifiés:
KGF.dll

La doc est inchangée. Les sources sont à jour.

La modification consiste à afficher une bulle jaune avec un bord rouge pout toutes les valeurs négatives de la série 3, celle qui détermine de diamètre des bulles.

Le programme de démo:
Code:
' test_Histogramme2D3D.bas

label creer, supprimer, versfichier, versclip, copier, alert, fond
dim res%, HG%, m1%, s$, serie1%(4), serie2%(4), serie3%(4), colors%(4)
dim ID1%, ID2%, ID3%, model%, i%, model_bulles%, model_camembert%, fond$
dim s1$
dim A_WModul%, A_WType%, A_WModel%, A_LSerie%, A_LValeur%

m1% = -1
model_bulles% = 7
model_camembert% = 8
fond$ = "_"

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
open_dialog 12

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-32000 : max 21,32000
spin 22 : top 22,50 : left 22,700 : width 22,60 : min 22,0-32000 : max 22,32000
spin 23 : top 23,70 : left 23,700 : width 23,60 : min 23,0-32000 : max 23,32000
spin 24 : top 24,90 : left 24,700 : width 24,60 : min 24,0-32000 : max 24,32000
spin 25 : top 25,110 : left 25,700 : width 25,60 : min 25,0-32000 : 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-32000 : max 31,32000
spin 32 : top 32,50 : left 32,800 : width 32,60 : min 32,0-32000 : max 32,32000
spin 33 : top 33,70 : left 33,800 : width 33,60 : min 33,0-32000 : max 33,32000
spin 34 : top 34,90 : left 34,800 : width 34,60 : min 34,0-32000 : max 34,32000
spin 35 : top 35,110 : left 35,800 : width 35,60 : min 35,0-32000 : max 35,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

button 41 : top 41,170 : left 41,800 : caption 41,"Fond d'image" : on_click 41,fond
picture 42 : top 42,200 : left 42,800 : width 42,360 : height 42,240 : stretch_on 42

alpha 43 : top 43,450 : left 43,800 : caption 43,"Titre:"
edit 44 : top 44,450 : left 44,850 : width 44,300 : text 44,"Démonstration"
alpha 45 : top 45,480 : left 45,800 : caption 45,"Police:"
Combo 46 : top 46,480 : left 46,850 : width 46,300 : font_names_load 46
for i%=1 to count(46)
  if item_read$(46,i%)="Arial" then exit_for
next i%
res% = dll_call2("SelectComboBoxItem",handle(46),i%)
alpha 47 : top 47,510 : left 47,800 : caption 47,"Taille:"
Combo 48 : top 48,510 : left 48,850 : width 48,40
  item_add 48,"8"
  item_add 48,"10"
  item_add 48,"12"
  item_add 48,"16"
  item_add 48,"20"
  item_add 48,"24"
res% = dll_call2("SelectComboBoxItem",handle(48),3)
check 50 : top 50,510 : left 50,930 : caption 50,"G" : font_bold 50
check 51 : top 51,510 : left 51,970 : caption 51,"I" : font_italic 51
check 52 : top 52,510 : left 52,1010 : caption 52,"S" : font_underline 52
check 53 : top 53,510 : left 53,1050 : caption 53,"B" : font_strike 53

alpha 99 : top 99,640 : left 99,10 : caption 99,"En attente..."
edit  98 : top 98,670 : left 98,10 : width 98,400 : inactive 98

on_user_event alert
                            
filter 12,"Fichier BMP|*.bmp"

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%
    if (serie2%(0)<1) or (serie2%(1)<1) or (serie2%(2)<1) or (serie2%(3)<1) or (serie2%(4)<1)
      message "Les valeurs de la série 2 doivent être >0 !"
      return
    end_if
    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)
  
  ' installer l'image de fond si nécessaire
  if fond$<>"_" then res% = dll_call2("HistogramBackground",HG%,adr(fond$))
  
  ' 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, les légendes et le titre
  res% = dll_call6("HistogramArea",HG%,1,10,10,550,400)    : ' graphismes
  res% = dll_call6("HistogramArea",HG%,2,10,415,200,80)    : ' légendes
  res% = dll_call6("HistogramArea",HG%,3,350,430,550,490)  : ' titre
  
  ' autoriser ou non les bordures (graphismes=oui, légendes=oui, titre=oui)
  res% = dll_call4("HistogramBorders",HG%,1,1,1)
  
  ' charger le titre du histogramme
  s$ = text$(44)
  s1$ = text$(46)
  res% = dll_call3("HistogramTitle",HG%,adr(s$),adr(s1$))
  
  ' adapter les propriétés du titre
  res% = dll_call6("HistogramTitleAttributes",HG%,val(text$(48)),checked(50),checked(51),checked(52),checked(53))
  ' 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

  ' autoriser les alertes en clic et survol
  res% = dll_call4("HistogramSetAlert",HG%,handle(0),1,1)
  
  ' autoriser le traçage en survol
  res% = dll_call3("HistogramSetTrace",HG%,handle(98),1)
  
  ' 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
  
alert:
' caption 99,"LParam="+hex$(USER_EVENT_WPARAM)+"  WParam="+hex$(USER_EVENT_LPARAM)
 A_WModul%  = bin_and(USER_EVENT_LPARAM,hex("FF000000"))
 A_WType%   = bin_and(USER_EVENT_LPARAM,hex("00FF0000"))/65536
 A_WModel%  = bin_and(USER_EVENT_LPARAM,hex("0000FFFF"))
 A_LSerie%  = bin_and(USER_EVENT_WPARAM,hex("FFFF0000"))/65536
 A_LValeur% = bin_and(USER_EVENT_WPARAM,hex("0000FFFF"))
 if A_WModul%<>hex("02000000") then return    : ' pas un évènement Histogram ?
' caption 99,str$(A_WType%)+"  "+str$(A_WModel%)+"  "+str$(A_LSerie%)+"  "+str$(A_LValeur%)
 select A_WType%
   case 0:      ' exit
     caption 99,""
   case 1:      ' move
     s$ = "Move "
     select A_LSerie%
       case 1
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie1%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Réalisation"
       case 2
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie2%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Prévision"
       case 3
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie3%(A_LValeur%))
        s$ = s$ + "  série "+str$(A_LSerie%)+"=Ecart"
     end_select
     s$ = s$ + "  modèle "+item_read$(6,A_WModel%)
     caption 99,s$    
   case 2:      ' click
     s$ = "Click "
     select A_LSerie%
       case 1
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie1%(A_LValeur%))
       case 2
        s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie2%(A_LValeur%))
       case 3
        s$ = s$ = s$ + "Valeur "+str$(A_LValeur%)+"="+str$(serie3%(A_LValeur%))
     end_select
     s$ = s$ + "  modèle "+item_read$(6,A_WModel%)
     s$ = s$ + "  série "+str$(A_LSerie%)
     caption 99,s$    
 end_select
 return

fond:
  fond$ = file_name$(12)
  if fond$<>"_"
    if file_exists(fond$)=0 then fond$ = "_"
    if fond$<>"_" then file_load 42,fond$
  end_if
  return

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

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 4 Juin 2017 - 14:20

Nouvelle version:
KGF.dll V7.72 du 04/06/2017

Nouveautés:
- nouvel objet: AnimatedPicture

Modules modifiés:
KGF.dll
KGF.chm

La doc et les sources sont à jour.

Cet objet est comme un picture (il peut afficher le contenu d'un fichier image), mais on peut lui charger plusieurs images (pas de limite par proramme !), et faire défiler ces images, dans l'ordre, avec une vitesse paramétrable. Pour de garndes images, cela ressemble à un diaporama automatique, et pour des petites images, cela fait des animations (homme qui marche, ...).

Voici une démo rapide:
Code:
' test_AnimatedPicture.bas

dim res%, AP%, M1%, nom$, w%, h%
M1% = -1


dll_on "KGF.dll"

AP% = dll_call3("CreateAnimatedPicture",handle(0),M1%,200)
res% = dll_call3("MoveAnimatedPicture",AP%,300,200)

nom$ = "marche_1_1_1_1.jpg"
  res% = dll_call3("AnalyzeImageFile",adr(nom$),adr(w%),adr(h%))
  w% = w%/3 : h% = h%/3
  res% = dll_call3("ResizeAnimatedPicture",AP%,w%,h%)
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_1_1_1_2.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_1_1_1_3.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_1_1_1_4.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_1_1_1_5.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_1_1_1_6.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

if 1=2
nom$ = "marche_2_1_1_1.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_2_1_1_2.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_2_1_1_3.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_2_1_1_4.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_2_1_1_5.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_3_1_1_1.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_3_1_1_2.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_3_1_1_3.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))

nom$ = "marche_3_1_1_4.jpg"
res% = dll_call2("LoadImageToAnimatedPicture",AP%,adr(nom$))
end_if

res% = dll_call4("ShowAnimatedPicture",AP%,1,1,200)

while scancode<>27
  pause 1000
end_while

res% = dll_call1("ClearAnimatedPicture",AP%)
res% = dll_call1("DeleteAnimatedPicture",AP%)

end
Vous trouverez les images dans mon WebDav, dossier DLLs\AnimatedPicture\.

Voici d'ailleurs un outil de découper une planche d'images en x lignes et y colonnes, en créant un fichier individuel pour chaque section:
Code:
' puzzeliser.bas


label ouvrir, change, go

dim nom$, w%, h%, w1%, h1%, w2%, h2%, res%, lig%, col%, mlig%, mcol%
dim x0%,y0%,x1%,y1%, nom1$, nom2$, ext1$, present%, temp%

full_space 0
open_dialog 1
button 10 : top 10,10 : left 10,10 : caption 10,"Ouvrir" : on_click 10,ouvrir

picture 11 : top 11,40 : left 11,10 : width 11,600 : height 11,400 : stretch_on 11
image 12 : image 13

alpha 20 : top 20,10 : left 20,150 : caption 20,"Largeur:"
edit 21 : top 21,10 : left 21,210 : width 21,80 : inactive 21
alpha 22 : top 22,10 : left 22,350 : caption 22,"Hauteur:"
edit 23 : top 23,10 : left 23,410 : width 23,80 : inactive 23

alpha 40 : top 40,40 : left 40,650 : caption 40,"Nombre de lignes:"
spin 41 : top 41,40 : left 41,760 : width 41,60 : min 41,1 : max 41,32
  on_change 41,change
alpha 42 : top 42,70 : left 42,650 : caption 42,"Nombre de colonnes:"
spin 43 : top 43,70 : left 43,760 : width 43,60 : min 43,1 : max 43,32
  on_change 43,change
position 41,1
position 43,1

button 50 : top 50,100 : left 50,760 : caption 50,"Couper"
  on_click 50,go

picture 60 : top 60,250 : left 60,650 : width 60,300 : height 60,200 : stretch_on 60
picture 61 : hide 61
  
dll_on "KGF.dll"
present% = 0

end

ouvrir:
  nom$ = file_name$(1)
  if nom$="_" then return
  if file_exists(nom$)=0 then return
  present% = 0
  res% = dll_call1("LoadAnyImageFile",adr(nom$))
  res% = dll_call3("AnalyzeImageFile",adr(nom$),adr(w%),adr(h%))
  if res%=1 then return
  
  clipboard_paste 13
  clipboard_paste 12
  clipboard_paste 11
  text 21,str$(w%)
  text 23,str$(h%)
  
  ext1$ = file_extract_extension$(nom$)
  nom1$ = left$(nom$,len(nom$) - len(ext1$))
  present% = 1
  gosub change
  return
  
change:
  if present%=0 then return
  clipboard_copy 13
  clipboard_paste 11
  mlig% = position(41)
  mcol% = position(43)
  2d_target_is 11
  2d_pen_color 255,0,0
  2d_pen_width 5
  if mlig%>1
    for lig%=1 to mlig%-1
      temp% = lig%*(h%/mlig%)
      2d_line 0,temp%,w%,temp%
      display
      pause 100
    next lig%
  end_if
  if mcol%>1
    for col%=1 to mcol%-1
      temp% = col%*(w%/mcol%)
      2d_line temp%,0,temp%,h%
      display
    next col%
  end_if
  2d_pen_color 0,0,0
  return
  
go:
  if present%=0 then return
  mlig% = position(41)
  mcol% = position(43)
  if (mlig%=1) and (mcol%=1) then return
  clipboard_copy 13
  clipboard_paste 11
  width 61,w%/mcol%
  height 61,h%/mlig%
  width 60,width(11)/mcol%
  height 60,height(11)/mlig%
  for lig%=1 to mlig%
    for col%=1 to mcol%
      2d_target_is 11
      x0% = (col%-1)*(w%/mcol%)
      y0% = (lig%-1)*(h%/mlig%)
      x1% = col%*(w%/mcol%) - 1
      y1% = lig%*(h%/mlig%) - 1
      2d_image_copy 12,x0%,y0%,x1%,y1%
      2d_target_is 61
      color 61,255,255,255
      2d_image_paste 12,0,0
      clipboard_copy 61
      clipboard_paste 60
      nom2$ = nom1$ + "_"+str$(lig%)+"_"+str$(col%)+".jpg"
      res% = dll_call1("SaveAnyImageFile",adr(nom2$))
      message nom2$
    next col%
  next lig%
  return


Dernière édition par Klaus le Dim 4 Juin 2017 - 19:08, é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 : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 4 Juin 2017 - 15:27

Je vais tester mais ton explication me fait penser au gif animé... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5456
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 4 Juin 2017 - 17:07

Ton webdav est inaccessible.
Pour le 2ème code, il y a une erreure en ligne 93 : une parenthèse ouvrante en trop.

EDIT :

J'ai testé avec une image à moi ===> OK !
Bravo Klaus
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 4 Juin 2017 - 19:09

Merci, Papydall. J'ai corrigé dans le post. C'était une modif de dernière minute...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 13 Juin 2017 - 1:25

Nouvelle version:
KGF.dll V7.73 du 13/06/2017

Nouveautés:
- WriteTextOverPicture: prise en compte correcte de la taille de la police

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 : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 14 Juin 2017 - 13:41

Nouvelle version:
KGF.dll V7.74 du 14/06/2017

Nouveautés:
- ExecuteProgram: ajouter automatiquement les guillemets autour du nom du fichier
si le paramètre n'est pas un nom de fichier, le prendre tel quel


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
Yannick

avatar

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

MessageSujet: re   Mer 14 Juin 2017 - 13:55

J' ai toujours un res% à -1
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 14 Juin 2017 - 13:58

Recharge. C'est corrigé et ça fonctionne chez moi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Mer 14 Juin 2017 - 14:05



dll chargé sur le webdev.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
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 12 sur 15Aller à la page : Précédent  1 ... 7 ... 11, 12, 13, 14, 15  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: