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

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
KGF_dll - nouvelles versions - Page 7 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF_dll - nouvelles versions - Page 7 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF_dll - nouvelles versions - Page 7 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF_dll - nouvelles versions - Page 7 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF_dll - nouvelles versions - Page 7 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 7 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF_dll - nouvelles versions - Page 7 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF_dll - nouvelles versions - Page 7 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF_dll - nouvelles versions - Page 7 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF_dll - nouvelles versions - Page 7 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF_dll - nouvelles versions - Page 7 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF_dll - nouvelles versions - Page 7 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Boutique Nike : -25% dès 50€ sur TOUT le ...
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+13
The Gamer
Nardo26
silverman
Minibug
Pedro
mindstorm
pascal10000
Jicehel
papydall
Jean Claude
JL35
Yannick
Klaus
17 participants
Aller à la page : Précédent  1 ... 6, 7, 8 ... 23 ... 40  Suivant
AuteurMessage
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 7 Jan 2015 - 16:37

Oups... problème de copier/coller. J'ai corrigé dans le code du post précédent. Et j'ai corrigé en même temps la prise en compte du code hexa retourné pour le numéro de groupe. Tout semble correct, maintenant.

En fait, ce que j'appelle un "groupe", c'est un objet composé ButtonArray composé d'un panel et de x boutons. Et chaque ButtonArray devrait avoir un numéro de "groupe" différent, pour éviter de confondre les touches cliquées.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 7 Jan 2015 - 19:50

Sans changement de version, j'ai ajouté une possibilité de déplacer un ButtonArray existant, et/ou de changer les dimensions (largeur d'une colonne, hauteur d'une ligne). Je vous invite à recharger la DLL si l'objet ButtonArray vous intéresse. La doc et les sources ont été mises à jour.

Voici ce que ça donne pour le petit programme de démo. J'ai élargi une colonne et une ligne dans le premier des 4 tableaux:
Code:
' test ButtonArray.bas

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

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

dll_on "KGF.dll"

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

on_click 0,clic

M1% = 0 - 1

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% = 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
 
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$))
  res% = dll_call5("SetButtonArrayGeometry",BA1%, M1%,M1%, 3,20) : ' élargir colonne 3 de 20
  res% = dll_call5("SetButtonArrayGeometry",BA1%, M1%,M1%, 0-2,30) : ' élargir ligne 2 de 30
  return
 
cre2:
  if BA2%<>0 then return
  xy%    = dll_call2("bin_SHL",20,16) + 180  : ' left 20 top 180
  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) + 330  : ' left 150 top 330
  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


Et voici le petit clavier virtuel:
Code:
' clavier_AZERTY.bas

label clic

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

dim BA%(30), nBA%

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

M1% = 0 - 1

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$))
  res% = dll_call5("SetButtonArrayGeometry",BA%(1), M1%,M1%, 14,16) : ' élargir colonne 14 de 16
end_sub

sub ligne_AZE()
  xy%    = dll_call2("bin_SHL",12,16) + 80  : ' left 12 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$))
  res% = dll_call5("SetButtonArrayGeometry",BA%(2), M1%,M1%, 1,8) : ' élargir colonne 1 de 8
  res% = dll_call5("SetButtonArrayGeometry",BA%(2), M1%,M1%, 14,8) : ' élargir colonne 14 de 8
end_sub

sub ligne_QSD()
  xy%    = dll_call2("bin_SHL",12,16) + 110  : ' left 12 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$))
  res% = dll_call5("SetButtonArrayGeometry",BA%(3), M1%,M1%, 1,16) : ' élargir colonne 1 de 16
end_sub

sub ligne_WXC()
  xy%    = dll_call2("bin_SHL",12,16) + 140  : ' left 12 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$))
  res% = dll_call5("SetButtonArrayGeometry",BA%(4), M1%,M1%, 1,24) : ' élargir colonne 1 de 24
  res% = dll_call5("SetButtonArrayGeometry",BA%(4), M1%,M1%, 12,52) : ' élargir colonne 12 de 52
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

C'est plus joli comme ça, non ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 7 Jan 2015 - 21:52

Un bug trouvé dans une des routines. Corrigé. Dll et sources à jour.
Le 7/1/2015 à 21h52.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyJeu 8 Jan 2015 - 1:15

J’ai testé et c’est OK.
J’ai relevé un petit détail  dans le code.
Ligne 13, tu écris
Code:
 M1% = 0 – 1

Pour le moins unaire :
Panoramic accepte le moins unaire s’il est affecté à une valeur numérique mais pas à une variable ou une fonction.
Pour cela il faut faire 0 - ...

Petit rappel pour ceux qui ont oublié :

Code:
dim a,b
a = -1  : ' Correct
' a = - 1  : ' Incorrect l'espace entre le signe moins et la valeur n'est pas accepté
b = 5

' a = -b : ' Incorrect, le moins unaire n'est pas accepté
a = 0-b  : ' Correct
a = 0   -    b  : ' Correct, les espaces sont acceptés

' a = -sin(3)  : ' Incorrect
a = 0 - sin(3) : ' Correct
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyJeu 8 Jan 2015 - 12:22

Nouvelle version:
KGF.dll V4.04 du 08/01/2015

Nouveautés:
- correction d'un bug dans GetKeyboardState

Modules modifiés:
KGF.dll

Les sources sont à jour.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyLun 12 Jan 2015 - 18:51

Nouvelle version:
KGF.dll V4.05 du 09/01/2015

Nouveautés:
- nouvel objet LabelPictureButton
- nouvel objet ObjectGroup


Modules modifiés:
KGF.dll, KGF.chm

Les sources sont à jour.

Cette version apporte deux nouveaux objets majeurs.

Le LabelPictureButton est un bouton graphique qui permet de définir une bitmap pour l'état "sorti" et une autre pour l'état "enfoncé". Mais également des libellés distincts pour ces 2 etats, ainsi que les attributs "taille", "attribut" et "couleur" de la police, séparément pour chacun des deux états ! En plus, ce bouton peut agir comme un bouton normal, ou comme un bouton va-et-vient, ou groupé comme une barette de boutons sur un walkman, par exemple: le bouton cliqué reste en bas, et un clic sur un autre bouton fait ressortir le bouton précédemment cliqué et enfonce le nouveau.

Voici un programme de démo. Pour cela, il faut télécharger l'image suivante sous le nom de test.bmp:
KGF_dll - nouvelles versions - Page 7 Test_b10
Et voici le code:
Code:
' test_LabelPictureButton.bas

label clic0, creer, effacer

dim res%, bmp$, lbup$, lbdown$, i%, n%
dim LPB%(10), GRP%
bmp$ = "test.bmp"

dll_on "KGF.dll"
on_click 0,clic0 : width 0,800

button 1 : top 1,10 : left 1,10 : caption 1,"Créer tout"
  on_click 1,creer

' button 2 : top 2,10 : left 2,110 : caption 2,"Effacer tout"
'  on_click 2,effacer

alpha 10 : top 10,350 : left 10,200 : font_size 10,16 : font_bold 10
list 11 : top 11,100 : left 11,10 : width 11,80

end


creer:
  if object_exists(21)=1 then return
  ' un bouton normal
  alpha 21 : top 21,80 : left 21,100 : caption 21,"Bouton normal"
  lbup$ = "LPB 1 sorti"
  lbdown$ = "LPB 1 enfoncé"
  res% = dll_call5("ConfigureLabelPictureButtonGeometry",handle(0),161,71,0,0)
  res% = dll_call6("ConfigureLabelPictureButtonStyle",12,8,1,2,0,255)
  LPB%(1) = dll_call6("CreateLabelPictureButton",0,100,100,adr(bmp$),adr(lbup$),adr(lbdown$))
  item_add 11,str$(LPB%(1))

  ' on bouton aller/retour
  alpha 22 : top 22,80 : left 22,500 : caption 22,"Bouton On/Off"
  lbup$ = "LPB 2 sorti"
  lbdown$ = "LPB 2 enfoncé"
  res% = dll_call5("ConfigureLabelPictureButtonGeometry",handle(0),161,71,1,1)
  res% = dll_call6("ConfigureLabelPictureButtonStyle",12,8,1,2,0,255)
  LPB%(2) = dll_call6("CreateLabelPictureButton",1,500,100,adr(bmp$),adr(lbup$),adr(lbdown$))
  item_add 11,str$(LPB%(2))

  ' 3 boutons liés
  alpha 23 : top 23,230 : left 23,100 : caption 23,"Groupe de 3 boutons liés"
  lbup$ = "LPB 3 sorti"
  lbdown$ = "LPB 3 enfoncé"
  res% = dll_call5("ConfigureLabelPictureButtonGeometry",handle(0),161,71,0,0)
  res% = dll_call6("ConfigureLabelPictureButtonStyle",12,8,1,2,0,255)
  GRP% = dll_call3("CreateLabelPictureButtonContainer",2,100,250)
  item_add 11,"->"+str$(GRP%)
  LPB%(3) = dll_call6("CreateLabelPictureButtonElement",GRP%,100,250,adr(bmp$),adr(lbup$),adr(lbdown$))
  item_add 11,str$(LPB%(3))

  lbup$ = "LPB 4 sorti"
  lbdown$ = "LPB 4 enfoncé"
  res% = dll_call5("ConfigureLabelPictureButtonGeometry",handle(0),161,71,0,0)
  res% = dll_call6("ConfigureLabelPictureButtonStyle",12,8,1,2,0,255)
  LPB%(4) = dll_call6("CreateLabelPictureButtonElement",GRP%,300,250,adr(bmp$),adr(lbup$),adr(lbdown$))
  item_add 11,str$(LPB%(4))

  lbup$ = "LPB 5 sorti"
  lbdown$ = "LPB 5 enfoncé"
  res% = dll_call5("ConfigureLabelPictureButtonGeometry",handle(0),161,71,0,0)
  res% = dll_call6("ConfigureLabelPictureButtonStyle",12,8,1,2,0,255)
  LPB%(5) = dll_call6("CreateLabelPictureButtonElement",GRP%,500,250,adr(bmp$),adr(lbup$),adr(lbdown$))
  item_add 11,str$(LPB%(5))

  return

clic0:
  res% = dll_call0("IdentifyLabelPictureButton")
  if res%<>0
    for i%=1 to 10
      if res%=LPB%(i%)
        caption 10,"clic sur "+str$(i%)
        return
      end_if
    next i%
  end_if
  return
 
effacer:
  delete 21
  delete 22
  delete 23
  for i%=1 to 1 : ' 10
    message str$(i%)+": "+str$(LPB%(i%))
    n% = LPB%(i%)
    res% = dll_call1("DeleteLabelPictureButton",n%)
  next i%
  return

L'autre objet, le ObjectGroup, permet de regrouper; de façon invisible, plusieurs objets Panoramic, et d'agir ensuite simultanément sur tous les objets d'un groupe. On peut créer autant de groupes qu'on veut, et un objet Panoramic peut appartenir simultanément à plusieurs groupes. Un exemple d'utilisation: rendre visible ou invisible d'un seul coup tous les objets d'un groupe.

Voici un programme de démo:
Code:
' test_ObjectGroupl.bas

label cacher1, montrer1, cacher2, montrer2, dans1, dans2
label inactiver1, activer1, inactiver2, activer2
label supprimer1, creer1, supprimer2, creer2

dim res%
dim OG1%, OG2%

width 0,700

button 1 : top 1,10 : left 1,10 : caption 1,"Cacher 1"
  on_click 1,cacher1
button 2 : top 2,30 : left 2,10 : caption 2,"Montrer 1"
  on_click 2,montrer1
button 5 : top 5,10 : left 5,110 : caption 5,"Inactiver 1"
  on_click 5,inactiver1
button 6 : top 6,30 : left 6,110 : caption 6,"Activer 1"
  on_click 6,activer1
button 51 : top 51,10 : left 51,210 : caption 51,"Supprimer 1"
  on_click 51,supprimer1
button 52 : top 52,30 : left 52,210 : caption 52,"Créer 1"
  on_click 52,creer1

button 3 : top 3,10 : left 3,310 : caption 3,"Cacher 2"
  on_click 3,cacher2
button 4 : top 4,30 : left 4,310 : caption 4,"Montrer 2"
  on_click 4,montrer2
button 7 : top 7,10 : left 7,410 : caption 7,"Inactiver 2"
  on_click 7,inactiver2
button 8 : top 8,30 : left 8,410 : caption 8,"Activer 2"
  on_click 8,activer2
button 53 : top 53,10 : left 53,510 : caption 53,"Supprimer 3"
  on_click 53,supprimer2
button 54 : top 54,30 : left 54,510 : caption 54,"Créer 3"
  on_click 54,creer2

dll_on "KGF.dll"

button 11 : top 11,90 : left 11,50 : caption 11,"Dans Panel 1"
  on_click 11,dans1
edit 12 : top 12,120 : left 12,50
alpha 13 : top 13,150 : left 13,50 : caption 13,"Libelle 1"
picture 14 : top 14,180 : left 14,50
button 31 : top 31,90 : left 31,350 : caption 31,"Dans Panel 2"
  on_click 31,dans2
edit 32 : top 32,120 : left 32,350
alpha 33 : top 33,150 : left 33,350 : caption 33,"Libelle 2"
picture 34 : top 34,180 : left 34,350

gosub creer1
gosub creer2

 end
 
cacher1:
  res% = dll_call3("ObjectGroupFunction",OG1%,1,0)
  return

montrer1:
  res% = dll_call3("ObjectGroupFunction",OG1%,1,1)
  return
 
inactiver1:
  res% = dll_call3("ObjectGroupFunction",OG1%,2,0)
  return

activer1:
  res% = dll_call3("ObjectGroupFunction",OG1%,2,1)
  return

supprimer1:
  OG1% = dll_call1("DeleteObjectGroup",OG1%)
  return
 
creer1:
  OG1% = dll_call0("CreateObjectGroup")
  res% = dll_call2("AddObjectToObjectGroup",OG1%,object_internal(11))
  res% = dll_call2("AddObjectToObjectGroup",OG1%,object_internal(12))
  res% = dll_call2("AddObjectToObjectGroup",OG1%,object_internal(13))
  res% = dll_call2("AddObjectToObjectGroup",OG1%,object_internal(14))
  return

dans1:
  message "Clic sur bouton dans ObjectGroup 1"
  return

cacher2:
  res% = dll_call3("ObjectGroupFunction",OG2%,1,0)
  return

montrer2:
  res% = dll_call3("ObjectGroupFunction",OG2%,1,1)
  return

inactiver2:
  res% = dll_call3("ObjectGroupFunction",OG2%,2,0)
  return

activer2:
  res% = dll_call3("ObjectGroupFunction",OG2%,2,1)
  return
 
supprimer2:
  OG2% = dll_call1("DeleteObjectGroup",OG2%)
  return

creer2:
  OG2% = dll_call0("CreateObjectGroup")
  res% = dll_call2("AddObjectToObjectGroup",OG2%,object_internal(31))
  res% = dll_call2("AddObjectToObjectGroup",OG2%,object_internal(32))
  res% = dll_call2("AddObjectToObjectGroup",OG2%,object_internal(33))
  res% = dll_call2("AddObjectToObjectGroup",OG2%,object_internal(34))
  return

dans2:
  message "Clic sur bouton dans ObjectGroup 2"
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 7 EmptyLun 12 Jan 2015 - 19:29

Wouhaou !...

Ca s' est super Klaus !
Je fonce me mettre à jour.

cheers
Revenir en haut Aller en bas
Jicehel

Jicehel


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyLun 12 Jan 2015 - 22:01

Superbe idée et réalisation. Très pratique ça. Merci Klaus
Revenir en haut Aller en bas
papydall

papydall


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyLun 12 Jan 2015 - 22:37

Je lance le programme ; je clique sur Créer tout ; j’obtiens comme récompense :

KGF_dll - nouvelles versions - Page 7 Sans_t10

===========================================================
Pour le 2ème code
Lignes 33 et suivantes
Code:
 button 53 : top 53,10 : left 53,510 : caption 53,"Supprimer 3"
  on_click 53,supprimer2
button 54 : top 54,30 : left 54,510 : caption 54,"Créer 3"
  on_click 54,creer2

Supprimer / créer 3 et le on_click renvoie à supprimer  / créer 2 qui ne fait rien !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyLun 12 Jan 2015 - 23:38

@Papydall:
As-tu chargé le fichier test.bmp (donné dans mon post) et placé dans le dossier dans lequel le programme s'exécute (ou adapté le chemin vers ce fichier) ? L'erreur que tu montres, se produit lorsque le fichier ne peut pas être chargé. Bon, je devrai sécuriser cela - d'accord. Mais en attendant, si tu suis la procédure, ça doit marcher...

EDIT

En fait, c'est bizare. J'ai déjà sécurisé cela:
Code:
   if length(bmp)>0 then begin
      if FileExists(bmp) then LabelPictureButton.Glyph.LoadFromFile(bmp);
    end;
Donc, ce n'est pas l'absence du fichier qui pose problème, au moment du chargement. Mais plutôt ce qui suit. Car dans ce fichier, il doit y avoir (regarder la doc à ce sujet !) 4 images successives, de même dimension, accolées les unes aux autres horizontalement, comme dans l'image du post. Et c'est lors de l'utilisation interne de cette image que ça plante:
Code:
   LabelPictureButton.NumGlyphs := 4;
J'indique que ce composant contient 4 images, et la bitmap sera divisée automatiquement en 4 portions. Or, si la bitmap est vide... boum !

2ème EDIT:

Citation :
Pour le 2ème code
Lignes 33 et suivantes

Code:
Code:

     button 53 : top 53,10 : left 53,510 : caption 53,"Supprimer 3"
      on_click 53,supprimer2
    button 54 : top 54,30 : left 54,510 : caption 54,"Créer 3"
      on_click 54,creer2

Supprimer / créer 3 et le on_click renvoie à supprimer  / créer 2 qui ne fait rien !

Certes, il y a une erreur de libellé. Au lieu de "Supprimer 3" et "Créer 3", ça devrait s'appeler "Supprimer 2" et "Créer 2". Mais attention: cela ne supprime ni crée les objets Panoramic ! Cela supprime ou crée le ObjectGroup qui regroupe les objets positionnés en-dessous ! La preuve: clique sur "Supprimer 2" - rien ne semble se passer. Pourtant, clique maintenant sur "Cacher 2" - et là, rien ne se passe ! Normal: le ObjectGroup 2 a été supprimé ! Maintenant, clique sur "Créer 2", puis "Cacher 2" - les objets disparaissent ! Pourquoi ? Le groupe ( et pas les objets Panoramic) a été recréé, et on peut à nouveau agir sur le groupe complet !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 0:33

L'erreur se situe sur la ligne 32

Code:

 LPB%(1) = dll_call6("CreateLabelPictureButton",0,100,100,adr(bmp$),adr(lbup$),adr(lbdown$))

sur la ligne 40

Code:

 LPB%(2) = dll_call6("CreateLabelPictureButton",1,500,100,adr(bmp$),adr(lbup$),adr(lbdown$))

sur la ligne 49

Code:

GRP% = dll_call3("CreateLabelPictureButtonContainer",2,100,250)

J'ai mis les lignes 32, 40 et 49 en REM, le programme s'est déroulé sans erreur; et la ligne 51 semble ne pas  provoquer  d'erreur

Code:

LPB%(3) = dll_call6("CreateLabelPictureButtonElement",GRP%,100,250,adr(bmp$),adr(lbup$),adr(lbdown$))


Donc, si os il y a, c’est au niveau des fonctions
CreateLabelPictureButton
CreateLabelPictureButtonContainer
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 0:46

Désactiver les lignes 32 et 42 signifie que tu ne crées plus ces boutons. Evidemment, il n'y a plus d'erreur...
Désactiver la ligne 49 signifie que tu ne crées plus le container. Donc, en ligne 51, le bouton ne peut plus être créé puisque le container n'existe pas. Donc, plus d'erreur non plus...

A ce rythme, il suffit de tout supprimer et de laisser juste le END, et tout va bien. (désolé, je n'ai pas pu résister...)

Plus sérieusement: en ligne 7, mets le chemin complet vers le fichier test.bmp, ou alors, crée l'exécutable là où se trouve le fichier test.bmp et lance l'exécutable. Et ça marchera, dans un cas comme dans l'autre.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 1:23

Salut Klaus.
J’ai des doutes sur le format de l’image.
Après tests, il s’est avéré que l’image que tu as postée est une image JPG et non BMP, c’est pourquoi ça n’a pas marché chez moi !
Je l’ai soumise à  Paint pour changer son type.
ET ÇA MARCHE !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 1:34

J'ai bien chargé une image BMP. Si, sur le site, elle apparaît comme un JPG, c'est le forum qui l'a transformée. Mais regarde sur mon WebDav, dossier Sources\KGF\ - tu y trouves bien le fichier test.bmp.

Ceci dit, je suis content que ça marche maintenant. Essaie de voir un peu le fonctionnement des différents types de boutons. Et tu peux mettre tes propres bitmaps,, même des photos, à condition de respecter deux règles:
1. créer un BMP avec les 4 images accollées, toutes de même dimension, quelles qu'elles soient, associés aux états suivants, dans l'ordre: sorti, survolé, enfoncé, inactif. Seuls "sorti" et "enfoncé" sont utilisés, mais les autres doivent être présents.
2. dans les fonctions ...Geometry, mettre les mêmes dimensions largeur et hauteur que celles des images individuelles.
Ainsi, tu obtiens des boutons avec tes propres images (simples couleurs, dessins, icônes, photos...).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 2:23

KGF_dll - nouvelles versions - Page 7 Text_110
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 11:10

J'ai restructuré la doc en rassemblant tout ce qui gestion des objets sous une rubrique "Objets" en tête de sommaire. C'est un peu plus lisible ainsi.

Eléments modifiés:
KGF.chm
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 13 Jan 2015 - 18:58

Voici un petit exemple d'utilisation de l'objet GroupObject, pour adapter les zones d'une page de saisie au type d'information à saisir.

Prenons une saisie de contacts. J'ai choisi 2 types de contacts: particuliers et entreprises. Une première combo permet de choisir cela. Automatiquement, les zones correspondantes s'affichent, et on peut passer de l'un à l'autre comme on veut. Pour le vérifier, il suffit de saisir des informations dans chaque zone, puis de passer à l'autre type de contact, puis saisir là aussi saisir des informations différentes. Enfin, on bascule à nouveau entre les deux types de saisies, et on voit les informations spécifiques pour chaque type de saisie.

Dans la saisie pour particuliers, il y a une combo pour choisir la civilité. Et lorsqu'on choisit Mme ou Mlle, un libellé et un champ supplémentaire pour le nom de naissance apparaît.

Voici le code:
Code:
' saisie_contact.bas

' Ce programme est une démonstration de l'utilisation de
' objet ObjectGroup, à l'aide de l'exemple de la saisie
' d'une fiche contact. En fonction du type de contact,
' certaines zones sont visibles, d'autres pas.

label click_1, click_11, click_41
width 0,800

' groupes d'objet
dim OG_entreprise%, OG_particulier%, OG_particulier_feminin%

' variables de travail
dim res%, i%

dll_on "KGF.dll"

combo 1 : top 1,10 : left 1,10 : on_click 1,click_1
  item_add 1,"Particulier"
  item_add 1,"Entreprise"




' ===== zones pour particuliers
OG_particulier% = dll_call0("CreateObjectGroup")
OG_particulier_feminin% = dll_call0("CreateObjectGroup")

combo 11 : top 11,40 : left 11,10 : width 11,50 : on_click 11,click_11
  item_add 11,"M."
  item_add 11,"Mme"
  item_add 11,"Mlle"
  item_add 11,"Dr."
  item_add 11,"Me"
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(11))

alpha 12 : top 12,70 : left 12,30 : caption 12,"Nom:"
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(12))
edit 13 : top 13,70 : left 13,60: width 13,120
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(13))
alpha 14 : top 14,70 : left 14,200 : caption 14,"Prénom:"
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(14))
edit 15 : top 15,70 : left 15,250: width 15,120
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(15))
alpha 16 : top 16,70 : left 16,390 : caption 16,"Nom de naissance:"
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(16))
res% = dll_call2("AddObjectToObjectGroup",OG_particulier_feminin%,object_internal(16))
edit 17 : top 17,70 : left 17,490: width 17,120
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(17))
res% = dll_call2("AddObjectToObjectGroup",OG_particulier_feminin%,object_internal(17))
alpha 18 : top 18,100 : left 18,10 : caption 18,"Adresse:"
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(18))
edit 19 : top 19,100 : left 19,60: width 19,120
res% = dll_call2("AddObjectToObjectGroup",OG_particulier%,object_internal(19))


' ===== zones pour entreprises
OG_entreprise% = dll_call0("CreateObjectGroup")

combo 41 : top 41,40 : left 41,10 : width 41,50 : on_click 41,click_41
  item_add 41,"Sté"
  item_add 41,"SA"
  item_add 41,"SARL"
  item_add 41,"Cabinet"
  item_add 41,"Etude"
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(41))

alpha 42 : top 42,70 : left 42,30 : caption 42,"Nom:"
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(42))
edit 43 : top 43,70 : left 43,60: width 43,120
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(43))
alpha 44 : top 44,100 : left 44,10 : caption 44,"Adresse:"
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(44))
edit 45 : top 45,100 : left 45,60: width 45,120
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(45))
alpha 46 : top 46,130 : left 46,10 : caption 46,"INSEE:"
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(46))
edit 47 : top 47,130 : left 47,60: width 47,120
res% = dll_call2("AddObjectToObjectGroup",OG_entreprise%,object_internal(47))

' defaul: particulier
res% = dll_call2("SelectComboBoxItem",handle(11),1)
res% = dll_call2("SelectComboBoxItem",handle(41),1)
res% = dll_call2("SelectComboBoxItem",handle(1),1)
gosub click_1
gosub click_11

end




click_1:
  select item_index(1)
    case 1: ' particuliers
      res% = dll_call3("ObjectGroupFunction",OG_entreprise%,1,0)
      res% = dll_call3("ObjectGroupFunction",OG_particulier%,1,1)
      gosub click_11
    case 2: ' entreprises
      res% = dll_call3("ObjectGroupFunction",OG_particulier%,1,0)
      res% = dll_call3("ObjectGroupFunction",OG_entreprise%,1,1)
  end_select
  return

click_11:
  i% = item_index(11)
  if (i%<2) or (i%>3)
    res% = dll_call3("ObjectGroupFunction",OG_particulier_feminin%,1,0)
  else
    res% = dll_call3("ObjectGroupFunction",OG_particulier_feminin%,1,1)
  end_if
  return
 
click_41:
  return

Ce n'est qu'un petit exemple, mais j'espère que le principe est plus clair comme ça. On voit que deux objets (16 et 17) font partie de 2 ObjectGroup différents.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: re : une petite question...   KGF_dll - nouvelles versions - Page 7 EmptyDim 18 Jan 2015 - 17:07

Klaus, 

Penses tu pouvoir améliorer, ou plutôt intégrer un objet Tab classique
avec les dernières évolutions de Panoramic ?
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyDim 18 Jan 2015 - 23:56

J'ai fait une simulation d'un objet TAB, entièrement en Panoramic. Certes, c'est lourd à utiliser, mais ça marche, et ça donne beaucoup de souplesse, puisque tu peux définir tous les attribits (police, couleur, ...) pour chaque onglet. Tu peux même placer un tel objet TAB dans un onglet d'un autre objet TAB.

Je pourrais, par des fonctions DLL, injecter un objet TAB de Delphi. Mais il faudrait le gérer entièrement par les fonctions DLL, et ça n'apporte pas de fonctionnalités supplémentaires par rapport à l'objet TAB en Panoramic dont j'ai parlé ci-dessus.

Je ne vois pas bien ce que ça apporterait en plus. Il faudrait que l'objet TAB soit introduit dans Panoramic, mais c'est le domaine de Jack. Si Jack le fait, je retire mon objet Panoramic immédiatement, dès que toutes les fonctionnalités seront couvertes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 7 EmptyLun 19 Jan 2015 - 7:39

Fonctionnellement, cela n' apporterait pas grand chose de plus, je le concède, 
mais le visuel serait un peu plus pro au niveau des onglets.
Je pense que pour ceux qui destinent leurs programmes à un partage public,
cela serait un plus non négligeable.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyLun 19 Jan 2015 - 10:48

Je comprends, Ygeronimi. Suggère cela à Jack, dans la rubrique correspondante...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 20 Jan 2015 - 1:08

Nouvelle version:
KGF.dll V4.06 du 20/01/2015

Nouveautés:
- nouvel objet TabObject
- début d'une restructuration interne majeure pour une meilleure modularité


Modules modifiés:
KGF.dll

Les sources sont à jour. La doc suivra.

Le nouvel objet fait suite à une question de YGeronimi. J'ai introduit une "simulation" d'un objet TAB, géré par la DLL, mais capable de recevoir des objets Panoramic, comme si c'était un container Panoramic, mais en multi-page, avec des onglets en haut. 5 nouvelles fonctions gèrent cela, et la palette va s'élargir pour offir d'autres fonctionnalités. Mais dès à présent, on peut en créer un nombre non limité, les placer où on veut, leur donner un nombre non limité d'onglets, et placer n'importe quel objet fenêtré Panoramic sur n'importe quel onglet (il faut qu'il y ait un handle de l'objet). Je contournerai cette limitation prochainement. Lorsque les onglets ne peuvent pas être visibles simultanément (à cause d'une largeur trop exigüe pour afficher tous les libellés, des petites flèches permettent de les faire défiler dans la barre des onglets. Une autre flèche, déjà affichée mais inactive, permettra d'afficher un menu vertical de tous les onglets pour un accès rapide. Et une croix, déjà affichée mais pas encore active, permettra de supprimer l'onglet sélectionné. Voici un programme de démo (le source est facile à lire):
Code:
' test PageControl.bas

label create1, create2, delete1, delete2

dim res%, s$
dim PC1%, PC2%, PC1pages%(3), PC2pages%(2), PC1handles%(3),PC2handles%(2)

button 1 : top 1,10 : left 1, 10 : width 1,20 : caption 1,"+" : on_click 1,create1
  hint 1,"Créer PageControl 1"
button 2 : top 2,10 : left 2,310 : width 2,20 : caption 2,"+" : on_click 2,create2
  hint 2,"Créer PageControl 2"

button 3 : top 3,10 : left 3, 30 : width 3,20 : caption 3,"x" : on_click 3,delete1
  hint 3,"Supprimer PageControl 1"
button 4 : top 4,10 : left 4,330 : width 4,20 : caption 4,"x" : on_click 4,delete2
  hint 4,"Supprimer PageControl 2"


dll_on "KGF.dll"

end

create1:
  PC1% = dll_call1("CreateTabObject",handle(0))
  res% = dll_call5("TabObjectGeometry",PC1%,10,70,200,300)
  s$ = "Onglet 1"
  res% = dll_call2("AddTabObjectTab",PC1%,adr(s$))
  s$ = "O. 2"
  res% = dll_call2("AddTabObjectTab",PC1%,adr(s$))
  s$ = "O. 3"
  res% = dll_call2("AddTabObjectTab",PC1%,adr(s$))

  if object_exists(11)=0
    edit 11 : top 11,10 : left 11,10
    button 13 : top 13,30 : left 13,50
    memo 14 : top 14,40 : left 14,30
  end_if
  
  res% = dll_call3("AddObjectToTabObjectTab",PC1%,1,handle(11))
  res% = dll_call3("AddObjectToTabObjectTab",PC1%,2,handle(13))
  res% = dll_call3("AddObjectToTabObjectTab",PC1%,3,handle(14))
  return
  
create2:
  PC2% = dll_call1("CreateTabObject",handle(0))
  res% = dll_call5("TabObjectGeometry",PC2%,310,70,200,300)
  s$ = "Paget 1"
  res% = dll_call2("AddTabObjectTab",PC2%,adr(s$))
  s$ = "P. 2"
  res% = dll_call2("AddTabObjectTab",PC2%,adr(s$))
  s$ = "P. 3"
  res% = dll_call2("AddTabObjectTab",PC2%,adr(s$))


  if object_exists(12)=0
    edit 12 : top 12,10 : left 12,10
  end_if
  res% = dll_call3("AddObjectToTabObjectTab",PC2%,2,handle(12))
  return
  
delete1:
  res% = dll_call1("DeleteTabObject",PC1%)
  PC1% = 0
  return

delete2:
  res% = dll_call1("DeleteTabObject",PC2%)
  PC2% = 0
  return
  
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1596
Date d'inscription : 19/01/2014

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Objet TAB.   KGF_dll - nouvelles versions - Page 7 EmptyMar 20 Jan 2015 - 7:01

Bonjour.

Je viens de tester l'objet TAB, et tout fonctionne parfaitement.
Revenir en haut Aller en bas
Yannick




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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 7 EmptyMar 20 Jan 2015 - 10:52

Je me doutais que ce défi allait te travailler l' esprit... Laughing
Je vais de ce pas mettre à jour la dll et faire quelques tests.

Bravo et surtout merci Klaus.
Revenir en haut Aller en bas
Yannick




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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 7 EmptyMar 20 Jan 2015 - 11:08

Je viens de tester ton code et ce sont des débuts plus que prometteurs !!!
cheers cheers cheers
Revenir en haut Aller en bas
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 7 sur 40Aller à la page : Précédent  1 ... 6, 7, 8 ... 23 ... 40  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» Nouvelles versions
» Synedit_Editor - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions

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: