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
» Tout est tranquille
par Jean Claude Hier à 21:41

» Texte en gif animé
par JL35 Hier à 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
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 ... 5, 6, 7 ... 23 ... 40  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 6 Déc 2014 - 1:35

Place une ligne
Code:
message path$
juste avant le bloc de lignes concernées, histoire de voir...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Dim 7 Déc 2014 - 14:59

Ca y est, tout fonctionne ! Laughing
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 10 Déc 2014 - 14:24

Nouvelle version:
KGF.dll V3.97 du 10/12/2014

Nouveautés:
- sécurisation des fonction StringList

Modules modifiés:
KGF.dll

Les sources sont à jour.

Auparavant, il était possible de donner un numéro de StringList en-dehors de la fourchette autorisée entre 1 et 20. Maintenant, toutes les fonctions StrngList retournent -1 (erreur) si cela se produit.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
pascal10000

avatar

Nombre de messages : 536
Localisation : Troyes
Date d'inscription : 05/02/2011

MessageSujet: exe telechargement a Klaus   Jeu 11 Déc 2014 - 11:19

bjr a Klaus et aux autre panoramicien

A klaus

Y a t'il la possibilité de télécharger une vidéo a partir youtube avec l'aide de la commande "DownloadFile" de KGF?

Merci de ta réponse et bonne jounée
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   Jeu 11 Déc 2014 - 11:50

Bien sûr... si tu connais l'URL.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
pascal10000

avatar

Nombre de messages : 536
Localisation : Troyes
Date d'inscription : 05/02/2011

MessageSujet: Re: KGF_dll - nouvelles versions   Jeu 11 Déc 2014 - 13:29


merci 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   Sam 13 Déc 2014 - 17:22

Nouvelle version:
KGF.dll V3.98 du 13/12/2014

Nouveautés:
- nouvelle fonction WindowCreateRegionFromBMP

Modules modifiés:
KGF.dll
KGF.chm


Les sources et la doc sont à jour.

Cette fonction permet, avec l'aide de la fonction WindowRegionAsWindow déjà existante, de créer des objets de n'importe quelle forme. On peut l'appliquer à des fenêtres (objets FORM), mais généralement à n'importe quel objet ayant un "handle": bouton, panel, memo, ...

Le programme de démo ci-après applique ce principe deux panels exactement superposés. Dans desux picture, des bitmaps sont déssinés. Le picture de gauche représente un anneau, et le picture de droite un cercle tenant exactement dans l'évidement de l'anneau. Lors d'un clic sur le bouton "Go", ces bitmaps sont appliqués aux panels de sorte que le panel numéro 2 recevra l'anneau et le panel 12 le cercle. Etant superposés, ces deux panels agissent en fait comme des boutons encastrés. On peur en effet cliquer sur le bouton bleu (panel 12) qui représente l'intérieur qu qu'on peut cliquer à travers le panel 2 qui est l'extérieur.
Code:
' test_WindowsCreateRegionFromBMP.bas

label go, exter, inter

dim res%, rgn1%, rgn2%, bmp$, transp%

width 0,700

button 1 : top 1,10 : left 1,200 : caption 1,"Go" : on_click 1,go

panel 12 : top 12,0 : left 12,0 : caption 12,"Intérieur" : on_click 12,inter
  width 12,100 : height 12,40 : color 12,0,0,255
panel 2 : top 2,0 : left 2,0 : caption 2,"Extérieur" : on_click 2,exter
  width 2,100 : height 2,40 : color 2,255,0,0

picture 3 : top 3,100 : left 3,10 : width 3,300 : height 3,300

2d_target_is 3
2d_circle 150,150,120
2d_circle 150,150,80
2d_flood 150,65,0,0,0

picture 13 : top 13,100 : left 13,310 : width 13,300 : height 13,300

2d_target_is 13
2d_circle 150,150,80
2d_flood 150,155,0,0,0

dll_on "KGF.dll"

end

go:
  transp% = (255*256+255)*256+255
  file_save 3,"MonMasque.bmp"
  bmp$ = "MonMasque.bmp"
  res% = dll_call5("WindowCreateRegionFromBMP",adr(bmp$),adr(rgn1%),transp%,width(2),height(2))
  res% = DLL_call2("WindowRegionAsWindow",handle(2),adr(rgn1%))
  file_save 13,"MonMasque.bmp"
  bmp$ = "MonMasque.bmp"
  res% = dll_call5("WindowCreateRegionFromBMP",adr(bmp$),adr(rgn2%),transp%,width(2),height(2))
  res% = DLL_call2("WindowRegionAsWindow",handle(12),adr(rgn2%))
  file_delete bmp$
  return
 
exter:
  color 2,255,127,127
  wait 100
  color 2,255,0,0
  message "clic sur Extérieur"
  return

inter:
  color 12,127,127,255
  wait 100
  color 12,0,0,255
  message "clic sur Intérieur"
  return

Mais vous pouvez dessiner une bitmap quelconque, avec PAINT ou n'importe quel logiciel de dessin, même des bitmaps contenant des morceaux non contigus comme une série de bulles etc. Tout ce qui est de la couleur de transparence passée en paramètre, sera exclu du dessin de l'objet auquel on applique la région résultante. Vous pouvez dessiner des flèches de la forme voulue, des mickeys, ... il n'y a que votre imagination pour limiter ce qu'une bitmap peut représenter...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Sam 13 Déc 2014 - 19:15

cheers Bravo Klaus, très interssante cette fonction.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Sam 13 Déc 2014 - 19:19

Génial, ça promet des interfaces superbes Smile
Il faudra que l'on se fasse des banques d'objets pour se faciliter le développement.
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   Dim 14 Déc 2014 - 0:19

Voici un petit programme qui applique ce changement de forme à la FORM 0 et en même temps à un mémo (objet 4) dans la form 0. Les deux auront cette forme de couronne.

Pour lancer la transformation, cliquer sur "Go".
Pour sortir du programme, cliquer sur "Stop".
Pour déplacer la fenêtre, maintenez la touche SHIFT enfoncée et bougez la souris.
Pour fixer la position de la fenêtre, relâchez la touche SHIFT.
Pour voir la réaction du mémo, cliquez dans la couronne blanche et tapez une touche.

Certes, cette image de "couronne" n'a pas de réel intérêt autre que pour montrer que c'est possible? Prenez n'importe quel fichier BMP et choisissez une couleur de transparence (un smiley, une icône quelconque, ...) et observez le résultat.

Code:
' test_WindowsCreateRegionFromBMP.bas

label go, sortie, down, up, tick, click0
label down4, up4

dim res%, rgn%, bmp$, transp%, key%, move%, dx%, dy%, x0%, y0%, x%, y%
dim hnd0%, hnd1%

width 0,700 : on_key_down 0,down : on_key_up 0,up : color 0,255,0,0
  on_click 0,click0

button 1 : top 1,10 : left 1,200 : caption 1,"Go" : on_click 1,go
button 2 : top 2,40 : left 2,200 : caption 2,"Stop" : on_click 2,sortie

picture 3 : top 3,100 : left 3,10 : width 3,300 : height 3,300

memo 4 : top 4,10 : left 4,300 : bar_both 4
  on_key_down 4,down4 : on_key_up 4,up4
  item_add 4,"abcdefghijklmnopqrstuvwxyz"
  item_add 4,"123456789012345678901234567890"

2d_target_is 3
2d_circle 150,150,120
2d_circle 150,150,80
2d_flood 150,65,0,0,0


dll_on "KGF.dll"

timer 11 : timer_off 11 : timer_interval 11,5 : on_timer 11,tick

end

go:
  hnd0% = handle_canvas(0)
  transp% = (255*256+255)*256+255
  bmp$ = "MonMasque.bmp"
  file_save 3,"MonMasque.bmp"
  res% = dll_call5("WindowCreateRegionFromBMP",adr(bmp$),adr(rgn%),transp%,width(0),height(0))
  res% = DLL_call2("WindowRegionAsWindow",handle(0),adr(rgn%))
  rgn% = 0
  res% = dll_call5("WindowCreateRegionFromBMP",adr(bmp$),adr(rgn%),transp%,width(4),height(4))
  res% = DLL_call2("WindowRegionAsWindow",handle(4),adr(rgn%))
  file_delete bmp$
  set_focus 0
  return
 
sortie:
  terminate
 
down:
  key% = key_down_code
  select key%
  case 16
    if dx%=0
      res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%))
      dx% = x% - left(0)
      dy% = y% - top(0)
      caption 0,str$(dx%)+","+str$(dy%)
      timer_on 11
    end_if
  case 39
    left 0, left(0) + 1
  end_select
  return
 
up:
  key% = key_up_code
  if key%=16
    dx% = 0
    timer_off 11
  end_if
  return
 
tick:
  res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%))
  left 0, x% - dx%
  top 0, y% - dy%
  return
 
click0:
  message "clic sur form 0"
  return
 
down4:
  item_add 4,"Memo down "+str$(key_down_code)
  set_focus 0
  return

up4:
  item_add 4,"Memo up "+str$(key_up_code)
  set_focus 0
  return


Voici l'image du programme avant application du changement de forme:


Et voici ce que ça donne après un clic sur "Go":


Sympa, non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
mindstorm

avatar

Nombre de messages : 533
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 14 Déc 2014 - 1:24

merci Klaus
je vais voir si je suis capable de m'en servir
.........
des que j'ai du temps
Sleep

ps j'ai une erreur ligne 39
il me semble qu il me manque l'image!
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   Dim 14 Déc 2014 - 3:07

Euh... l'image est produite par le programme lui-même... regarde les lignes 22 à 25 pour le dessin et les lignes 37 et 38 pour la création du fichier...
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 14 Déc 2014 - 3:25

Regarde le source légèrement modifié qui suit. J'ai inséré, après le dessin, deux lignes qui permettent de charger une BMP quelconque. Voici le code ainsi modifié:
Code:
' test_WindowsCreateRegionFromBMP.bas

label go, sortie, down, up, tick, click0
label down4, up4

dim res%, rgn%, bmp$, transp%, key%, move%, dx%, dy%, x0%, y0%, x%, y%
dim hnd0%, hnd1%

width 0,700 : on_key_down 0,down : on_key_up 0,up : color 0,255,0,0
  on_click 0,click0

button 1 : top 1,00 : left 1,200 : caption 1,"Go" : on_click 1,go
button 2 : top 2,20 : left 2,200 : caption 2,"Stop" : on_click 2,sortie

picture 3 : top 3,100 : left 3,10 : width 3,300 : height 3,300

memo 4 : top 4,10 : left 4,300 : bar_both 4
  on_key_down 4,down4 : on_key_up 4,up4
  item_add 4,"abcdefghijklmnopqrstuvwxyz"
  item_add 4,"123456789012345678901234567890"

2d_target_is 3
' dessiner la forme
' 2d_circle 150,150,12
' 2d_circle 150,150,80
' 2d_flood 150,65,0,0,0

' ou charger un fichier BMP
stretch_on 3
file_load 3,"crane.bmp"


dll_on "KGF.dll"

timer 11 : timer_off 11 : timer_interval 11,5 : on_timer 11,tick

end

go:
  hide 3
  hnd0% = handle_canvas(0)
  transp% = (255*256+255)*256+255
  bmp$ = "MonMasque.bmp"
  file_save 3,"MonMasque.bmp"
  res% = dll_call5("WindowCreateRegionFromBMP",adr(bmp$),adr(rgn%),transp%,width(0),height(0))
  res% = DLL_call2("WindowRegionAsWindow",handle(0),adr(rgn%))
  rgn% = 0
  res% = dll_call5("WindowCreateRegionFromBMP",adr(bmp$),adr(rgn%),transp%,width(4),height(4))
  res% = DLL_call2("WindowRegionAsWindow",handle(4),adr(rgn%))
  file_delete bmp$
  res% = DLL_call2("WindowTranparency",handle(0),100)
  set_focus 0
  return
  
sortie:
  terminate
  
down:
  key% = key_down_code
  select key%
  case 16
    if dx%=0
      res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%))
      dx% = x% - left(0)
      dy% = y% - top(0)
      caption 0,str$(dx%)+","+str$(dy%)
      timer_on 11
    end_if
  case 39
    left 0, left(0) + 1
  end_select
  return
  
up:
  key% = key_up_code
  if key%=16
    dx% = 0
    timer_off 11
  end_if
  return
  
tick:
  res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%))
  left 0, x% - dx%
  top 0, y% - dy%
  return
  
click0:
'  message "clic sur form 0"
  return
  
down4:
  item_add 4,"Memo down "+str$(key_down_code)
  set_focus 0
  return

up4:
  item_add 4,"Memo up "+str$(key_up_code)
  set_focus 0
  return



J'ai choisi crane.bmp qiue voici (fichier BMP de 100x100 pixels):


Et j'ai mis un taux de transparence sur le fenêtre, dans le traitement du bouton "Go". Voici ce que ça donne en le lançant dans l'éditeur:


Et lorsque je minimise la fenêtre de l'éditeur Panoramic:


Ca fait peur, non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
mindstorm

avatar

Nombre de messages : 533
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 14 Déc 2014 - 13:56

Merci Klaus mais rien de cette sorte ne peut faire peur a JOLLY ROGER pirat

je viens de penser a une chose
la version de la DLL que j utilise est la nouvelle version du 03 décembre 2014
se peut il qu'elle soit périmée?

et oui déjà sunny
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   Dim 14 Déc 2014 - 14:09

Eh oui - c'est la KGF.dll V3.98 du 13/12/2014 actuellement:

Nouveautés:
- nouvelle fonction WindowCreateRegionFromBMP

Ca date d'hier, à 15h22.
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 23 Déc 2014 - 4:28

Nouvelle version:
KGF.dll V3.99 du 22/12/2014

Nouveautés:
- nouvelle fonction GetFormClientMetrics

Modules modifiés:
KGF.dll
KGF.chm


Les sources et la doc sont à jour.

Cette fonction permet d'obtenir les coordonnées absolues de la zone client d'une fenêtre (ou d'un objet) ainsi que largeur et hauteur de cette zone client. C'est une variation de la fonction GetFormMetrics déjà existante, qui retourne la position et les dimensions extérieures de la fenêtre. La nouvelle fonction est très utile pour dimensionner correctement les affichages des objets, dans se soucier de l'épaisseur des bordures, en fonction du mode de bordure choisi.
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 28 Déc 2014 - 14:25

Nouvelle version:
KGF.dll V4.00 du 28/12/2014

Nouveautés:
- nouvelle fonction ExecuteProgramAndWait

Modules modifiés:
KGF.dll
KGF.chm


Les sources et la doc sont à jour.

C'est la copie exacte de la fonction existante ExecuteProgram, mais cette nouvelle fonction de retourne que lorsque le programme lancé est terminé, quelque soit la cause de sa terminaison.
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 Jan 2015 - 4:05

Nouvelle version:
KGF.dll V4.01 du 03/01/2015

Nouveautés:
- nouvelle fonction GetObjectTree

Modules modifiés:
KGF.dll
KGF.chm


Les sources et la doc sont à jour.

Cette fonction exploite la nouvelle fonction OBJECT_INTERNAL(N) de Panoramic V0.29i4 du 2/1/2015. Il faut donc impérativement avoir cette version de Panoramic pour utiliser cette fonction. Bien sur, ceci n'est pas requis pour les autres fonctions de KGF.dll.

La fonction GetObjectTree est appelée de la manière suivante:
Code:
res% = dll_call3("GetObjectTree",object_number(obj%),object_number(lst%),0)

Le premier paramètre détermine l'objet dont on veut récupérer l'arborescence de objets contenus. obj% peut être le numéro d'objet d'une form, d'un container, d'un container_option, d'un panel, d'un main_menu ou d'un sub_menu. Pour tous les autres objets, cette fonction ne retourne rien.

Le deuxième paramètre indique un objet LIST qui recevra le résultat, sous forme d'une ligne par objets. Chaque ligne contient une indentation en fonction du niveau de profondeur, et le type de l'objet. Ainsi, la liste donne une idée précise de la structure de l'objet analysé.

Voici un programme de démo:
Code:

dim n%,m%,res%

dll_on "KGF.dll"

list 87 : left 87,420 : top 87,10 : width 87,150 : height 87,400


container 6 : left 6,30 : width 6,300 : height 6,400 : caption 6,"Container 6"
item_add 87,"6->"+str$(n%)
button 7 : parent 7,6 : top 7,20 : left 7,20
edit 8 : parent 8,6 : top 8,50 : left 8,20
container_option 20 : parent 20,6 : top 20,80 : left 20,30
option 21 : parent 21,20 : top 21,20 : left 21,20
option 22 : parent 22,20 : top 22,50 : left 22,20
picture 30 : parent 30,6 : top 30,200 : left 30,20
alpha 31 : parent 31,6 : top 31,250 : left 31,20 : caption 31,"Container"
container 40 : parent 40,6 : top 40,280 : left 40,20 : caption 40,"Container 46"
dlist 51          : ' <------ ne sera pas dans l'arborescence du container 6 !
open_dialog 52    : ' <------ ne sera pas dans l'arborescence du container 6 !
check 53 : parent 53,40 : top 53,20 : left 53,20
check 54 : parent 54,40 : top 54,50 : left 54,20

clear 87
n% = object_internal(6)
m% = object_internal(87)
res% = dll_call3("GetObjectTree",n%,m%,0)
end

Et voici l'affichage après exécution:


D'autres fonctions de ce genre suivront, ainsi que la refonte des fonctions déjà existantes qui retournent des informations dans un mémo, une list ou un edit.
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 7 Jan 2015 - 13:38

Nouvelle version:
KGF.dll V4.03 du 07/01/2015

Nouveautés:
- nouvelles fonctions IdentifyButtonArrayButton, CreateButtonArray, DeleteButtonArray, SetButtonArrayGeometry

Modules modifiés:
KGF.dll
KGF.chm

Les sources et la doc sont à jour.

Ces fonctions permettent de gérer un nouveau pseudo-objet ButtonArray. Il s'agit d'un groupe de boutons organisé en matrice, en précisant le nombre de lignes et colonnes. Ces boutons sont automatiquement créés, et une technique particulière permet de récupérer et identifier un clic sur un des boutons.

On peut créer autant d'objets ButtonArray que nécessaire. Ce n'est pas limité !

Voici un exemple d'utilisation. Cliquez sur les 4 boutons "Créer ..." et amirez. Cliquez sur n'importe lequel des boutons d'un des ButtonArray... Puis, utilisez les boutons "Supprimer..." pour les faire disparaître et "Créer..." pour les recréer...

Code:
' test ButtonArray.bas

label clic, cre1, cre2, cre3,  cre4, del1, del2, del3, del4

dim res%,xy%,nlnc%,lght%,grpdxy%,s$, i%,j%
dim grp%,l%,c%
dim BA1%, BA2%, BA3%, BA4%, nBA%

dll_on "KGF.dll"

button 1 : top 1,150 : left 1,300 : caption 1,"Créer 1" : on_click 1,cre1
button 2 : top 2,180 : left 2,300 : caption 2,"Créer 2" : on_click 2,cre2
button 3 : top 3,210 : left 3,300 : caption 3,"Créer 3" : on_click 3,cre3
button 4 : top 4,240 : left 4,300 : caption 4,"Créer 4" : on_click 4,cre4
button 11 : top 11,150 : left 11,400 : caption 11,"Supprimer 1" : on_click 11,del1
button 12 : top 12,180 : left 12,400 : caption 12,"Supprimer 2" : on_click 12,del2
button 13 : top 13,210 : left 13,400 : caption 13,"Supprimer 3" : on_click 13,del3
button 14 : top 14,240 : left 14,400 : caption 14,"Supprimer 4" : on_click 14,del4

on_click 0,clic

end

clic:
  res% = dll_call0("IdentifyButtonArrayButton")   : ' récupérer l'ID du bouton
  if res%=0 then return                           : ' abandon si ce n'est pas un de nos boutons
  s$ = hex$(res%)
  s$ = left$(s$,len(s$)-4)
  nBA% = val(s$)
  l%   = dll_call2("bin_SHR",res%,8)
  l%   = bin_AND(l%,255)
  c%   = bin_AND(res%,255)
  message "clic sur BA groupe="+hex$(nBA%)+"  ligne="+str$(l%)+"  colonne="+str$(c%)
  return
  
cre1:
  if BA1%<>0 then return
  xy%     = dll_call2("bin_SHL",30,16) + 40   : ' left 30 top 40
  nlnc%   = dll_call2("bin_SHL",3,16)  + 9    : ' 3 lignes 9 colonnes
  lght%   = dll_call2("bin_SHL",50,16) + 20   : ' width 50 height 20
  grpdxy% = dll_call2("bin_SHL",1,16) + 5     : ' groupe 1 écart 5
  for i%=1 to 3
    for j%=1 to 9
      s$ = s$ + str$(i%)+"/"+str$(j%)+","
    next j%
  next i%
  BA1%  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
  return
  
cre2:
  if BA2%<>0 then return
  xy%     = dll_call2("bin_SHL",20,16) + 150  : ' left 20 top 150
  nlnc%   = dll_call2("bin_SHL",4,16)  + 4    : ' 4 lignes 4 colonnes
  lght%   = dll_call2("bin_SHL",50,16) + 20   : ' width 50 height 20
  grpdxy% = dll_call2("bin_SHL",2,16) + 0     : ' groupe 2 écart 0
  for i%=1 to 3
    for j%=1 to 9
      s$ = s$ + str$(i%)+"/"+str$(j%)+","
    next j%
  next i%
  BA2%  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
  return
  
cre3:
  if BA3%<>0 then return
  xy%     = dll_call2("bin_SHL",20,16) + 300  : ' left 20 top 300
  nlnc%   = dll_call2("bin_SHL",6,16)  + 1    : ' 6 lignes 1 colonnes
  lght%   = dll_call2("bin_SHL",70,16) + 15   : ' width 70 height 15
  grpdxy% = dll_call2("bin_SHL",3,16) + 0     : ' groupe 3 écart 0
  for i%=1 to 3
    for j%=1 to 9
      s$ = s$ + str$(i%)+"/"+str$(j%)+","
    next j%
  next i%
  BA3%  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
  return

cre4:
  if BA4%<>0 then return
  xy%     = dll_call2("bin_SHL",150,16) + 300  : ' left 150 top 300
  nlnc%   = dll_call2("bin_SHL",1,16)  + 6    : ' 1 lignes 6 colonnes
  lght%   = dll_call2("bin_SHL",30,16) + 30   : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",4,16) + 0     : ' groupe 4 écart 0
  for i%=1 to 3
    for j%=1 to 9
      s$ = s$ + str$(i%)+"/"+str$(j%)+","
    next j%
  next i%
  BA4%  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
  return

del1:
  res% = dll_call1("DeleteButtonArray",BA1%)
  BA1% = 0
  return
  
del2:
  res% = dll_call1("DeleteButtonArray",BA2%)
  BA2% = 0
  return

del3:
  res% = dll_call1("DeleteButtonArray",BA3%)
  BA3% = 0
  return

del4:
  res% = dll_call1("DeleteButtonArray",BA4%)
  BA4% = 0
  return


Ca ouvre des perspectives, non ? Barres de commande horizontales ou verticales, claviers virtuels,...


Dernière édition par Klaus le Mer 7 Jan 2015 - 21:46, é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 : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 7 Jan 2015 - 13:59

Chargée, testée, approuvée !!!  Laughing
C' est un bon complément à la "tool_bar".

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

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 7 Jan 2015 - 14:15

Je me demande quand même si ça ne vaudrait pas le coup de faire une version explosée par thématique de KGF avec une version allégée de la doc pour cette DLL ?
Comme ça si les gens n'utilisent qu'une partie des fonctionnalités, ils utilisent la DLL "légère" et s'ils utilisent plusieurs fonctionnalités, soient ils jonglent avec les ouvertures / fermetures / soient ils utilisent KGF.DLL
Après reste à choisir judicieusement les thématiques pour ne pas faire trop de DLL, mais simplifier quand même les documentations.
A toi de voir Klaus si c'est une bonne idée et si tu veux te lancer dans ce boulot supplémentaire.
L'idée vient aussi par anticipation s'il y aplusieurs concepteurs de DLL. Ce serait plus simple pour trouver le thématiques déjà couverte (même si la doc est bien faite sur ce sujet et est déjà regroupée par thème). Voilà, c'était mon idée de boulot en plus du jour, désolé...

PS : et merci pour cette nouvelle possibilité qui en effet permet bien des choses (même pourquoi pas la création de damiers... Il suffit ensuite de pouvoir choisir la couleur du bouton dans la création du tableau.)
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 7 Jan 2015 - 15:58

C'est complexe, Jicehel. Initialement, j'avais fait plusieurs DLLs indépendantes. Cela a dérangé un certain nombre d'utilisateurs. Et ça devenait très lourd à maintenir. J'ai donc tout réuni en une seule DLL, et techniquement, c'est bien plus simple ainsi. Et que dire de la doc - maintenir 5, 7 ou 10 fichiers d'aide séparément - quelle galère ! As-tu bien regardé la structuration du fichier KGF.dll actuel ? Il y a des mots-clé, il y a même in indexe alphabétique des fonctions, et le tout en 2 langues... Non. Je n'ai pas envie de redécouper cela en plusieurs morceaux. J'espère que tu comprends mon point de vue.

En ce qui concerne l'évolution du nouveau ButtonArray, certes, on n'est est qu'au début. On verra bien les besoins et les suggestions qui se feront jour. Plusieurs pistes: changer dynamiquement les libellés, cacher/réafficher certains boutons ou le ButtonArray entier, utiliser d'autres objets que des boutons pour constituer la matrice (des images, par exemple...) etc. On verra bien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 7 Jan 2015 - 16:13

OK, merci pour ta réponse Klaus. En fait cette réflexion venait aussi du fait qu'en règle générale, quand un thème est finalisé, il n'évolue plus pendant de nombreux mois. Mais bon, il est indiscutable que ça fait encore du boulot en plus et mieux vaut que tu continues à nous gater avec pleins de nouveautés dans KGF ^^
De toute façon, si on sait faire des DLL comme tu partages les sources, rien ne nous empèche d'en faire une qui soit propre à un besoin particulier si besoin et en gardant la même syntaxe que dans KGF, on peut réutiliser directement la doc ^^
Bon, je me tais et j'arrète de polluer ce sujet 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 7 Jan 2015 - 17:09

Un petit exemple de ce que l'on peut faire avec ButtonArray:
Code:
' clavier_AZERTY.bas

label clic

dim res%, s$, l%, c%
dim xy%, nlnc%, lght%, grpdxy%

dim BA%(30), nBA%

dll_on "KGF.dll"
on_click 0,clic : width 0,700

ligne_123()
ligne_AZE()
ligne_QSD()
ligne_WXC()

ligne_num1()
ligne_num2()
ligne_num3()
ligne_num4()
ligne_num5()
ligne_num6()


end

sub ligne_123()
  xy%    = dll_call2("bin_SHL",12,16) + 50  : ' left 12 top 50
  nlnc%  = dll_call2("bin_SHL",1,16)  + 14  : ' 1 lignes 14 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",1,16) + 0    : ' groupe 1 écart 0
  s$ = "²,&,é,'',',(,-,è,_,ç,à,),=,Del"
  BA%(1)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_AZE()
  xy%    = dll_call2("bin_SHL",20,16) + 80  : ' left 20 top 80
  nlnc%  = dll_call2("bin_SHL",1,16)  + 14  : ' 1 lignes 14 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",2,16) + 0    : ' groupe 2 écart 0
  s$ = "Tab,A,Z,E,R,T,Y,U,I,O,P,^,$,Rtn"
  BA%(2)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_QSD()
  xy%    = dll_call2("bin_SHL",28,16) + 110  : ' left 28 top 110
  nlnc%  = dll_call2("bin_SHL",1,16)  + 14    : ' 1 lignes 14 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",3,16) + 0    : ' groupe 3 écart 0
  s$ = "Ver.,Q,S,D,F,G,H,J,K,L,M,ù,*,Rtn"
  BA%(3)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_WXC()
  xy%    = dll_call2("bin_SHL",36,16) + 140  : ' left 36 top 140
  nlnc%  = dll_call2("bin_SHL",1,16)  + 12  : ' 1 lignes 12 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",4,16) + 0    : ' groupe 4 écart 0
  s$ = "Maj,W,X,C,V,B,N,x,;,:,!,Maj"
  BA%(4)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_num1()
  xy%    = dll_call2("bin_SHL",500,16) + 20  : ' left 500 top 20
  nlnc%  = dll_call2("bin_SHL",1,16)  + 4    : ' 1 lignes 4 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",5,16) + 0    : ' groupe 5 écart 0
  s$ = "Déb.,Fin,Psuiv,Ppréc"
  BA%(11)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_num2()
  xy%    = dll_call2("bin_SHL",500,16) + 50  : ' left 500 top 50
  nlnc%  = dll_call2("bin_SHL",1,16)  + 4    : ' 1 lignes 4 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",6,16) + 0    : ' groupe 6 écart 0
  s$ = "Num.,/,*,-"
  BA%(12)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_num3()
  xy%    = dll_call2("bin_SHL",500,16) + 80  : ' left 500 top 80
  nlnc%  = dll_call2("bin_SHL",1,16)  + 4    : ' 1 lignes 4 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",7,16) + 0    : ' groupe 7 écart 0
  s$ = "7,8,9,+"
  BA%(13)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_num4()
  xy%    = dll_call2("bin_SHL",500,16) + 110  : ' left 500 top 110
  nlnc%  = dll_call2("bin_SHL",1,16)  + 4    : ' 1 lignes 4 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",8,16) + 0    : ' groupe 8 écart 0
  s$ = "4,5,6,+"
  BA%(14)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_num5()
  xy%    = dll_call2("bin_SHL",500,16) + 140  : ' left 500 top 140
  nlnc%  = dll_call2("bin_SHL",1,16)  + 4    : ' 1 lignes 4 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",9,16) + 0    : ' groupe 9 écart 0
  s$ = "1,2,3,Rtn"
  BA%(15)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

sub ligne_num6()
  xy%    = dll_call2("bin_SHL",500,16) + 170  : ' left 500 top 170
  nlnc%  = dll_call2("bin_SHL",1,16)  + 4    : ' 1 lignes 4 colonnes
  lght%  = dll_call2("bin_SHL",30,16) + 30  : ' width 30 height 30
  grpdxy% = dll_call2("bin_SHL",10,16) + 0    : ' groupe 10 écart 0
  s$ = "0,0,.,Rtn"
  BA%(16)  = dll_call6("CreateButtonArray",handle(0),xy%,nlnc%,lght%,grpdxy%,adr(s$))
end_sub

clic:
  res% = dll_call0("IdentifyButtonArrayButton")  : ' récupérer l'ID du bouton
  if res%=0 then return                      : ' abandon si ce n'est pas un de nos boutons
  s$ = hex$(res%)
  s$ = left$(s$,len(s$)-4)
  nBA% = hex(s$)
  l%  = dll_call2("bin_SHR",res%,8)
  l%  = bin_AND(l%,255)
  c%  = bin_AND(res%,255)
  message "clic sur BA groupe="+str$(nBA%)+"  ligne="+str$(l%)+"  colonne="+str$(c%)
  return


Dernière édition par Klaus le Mer 7 Jan 2015 - 18:35, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

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

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 7 Jan 2015 - 18:25

Je n'ai pas compris pourquoi tu créé tout le pavé numérique dans le groupe 1 du coup, il y a 4 groupe 1 d'une ligne sur 4 colonnes. Pourquoi ne pas changer le numéro du groupe ou créer directement le groupe 1 avec 4 lignes et 4 colonnes ?
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 6 sur 40Aller à la page : Précédent  1 ... 5, 6, 7 ... 23 ... 40  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: