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 ... 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 : 7930
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 : 508
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 : 508
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 : 7930
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 : 5841
Age : 44
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 : 530
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 : 530
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 : 7930
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 : 5841
Age : 44
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 : 5841
Age : 44
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 : 5841
Age : 44
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: