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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

 

 KGF_dll - nouvelles versions

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

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 8:55

Bonjour Klaus !

Je viens de tester la dernière version... Il reste encore un problème sur la sélection multiple.
Lorsque que l'on tire sur les bords du cadre d'un des objets pour les déplacer, l’icône ne suis pas sur tous les objets et apparaît à plusieurs endroits simultanément et hors des objets.

KGF_dll - nouvelles versions - Page 24 Sans_t22

Bonne journée et bon courage... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 9:24

Ah, la multi-sélection... je l'avais oubliée, cellle-là ! Je vais réparer cela aussi !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 10:57

Nouvelle version:
KGF.dll V8.27 du 05/01/2018

Nouveautés:
- Designer: correction du problème du ObjectMover en multi-sélection

Modules modifiés:
KGF.dll

La doc est inchangée. Les sources seront à jour prochainement.

Il y a une vraie incompatibilité entre le traitement fait par Designer et celui de ObjectMover, concernant les déplacements. Alors que le premier signale les déplacements à faire au programme Panoramic qui a alors la responsabilité de les effectuer, ce dernier les effectue en interne, sans intervention du programme Panoramic. C'est pour cette raison qu'en multi-sélection, seul l'ObjectMover de l'objet accroché se déplaçait, par un mouvement par Designer, car le programme Panoramic ne pouvait pas connaître les positions des autres ObjectMover.

J'ai donc désactivé la création des ObjectMover en mode multi-sélection - cela n'a aucun sens.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 14:43

Nouvelle version:
KGF.dll V8.28 du 05/01/2018

Nouveautés:
- DesignerFunction: nouveau code action 7
- Designer: gérer les ObjectMover en multi-sélection


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

En multi-sélection, la position des objets sélectionnés est gérée par le programme Panoramic. J'ai donc trouvé un moyen d'actualiser la position du ObjectMover associé à chaque objet sélectionné, par un nouveau code action à la fonction DesignerFunction. L'appel avec ce code fonction doit être placé dans la boucle de traitement pour l'ensemble des objets sélectionné.

Voici le programme démo qui montre cela:
Code:
' pb_designer.bas

label click, fin, CT, desel, chg, change, aligner, dump

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner


' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)

' gosub dump

end
 
dump:
memo 177 : full_space 177 : bar_both 177
left 12,1234
top 12,2345
width 12,432
height 12,321
res% = dll_call3("DumpPanoramic",handle(177),object_internal(13),150)
' item_add 177,"handle=$"+hex$(handle(13))+"="+str$(handle(13))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6))
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  obj% = number_click
  parent% = parent(obj%)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
'  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  select item_index(4)
    case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé
    case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  select selmode%
    case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé
    case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 19:44

Au secours Klaus ! geek

La sélection multiple pose un problème...

1. Je commence par sélectionner le choix multique des objets dans la liste en haut.
2. Je sélectionne avec la touche CTRL plusieurs objets.
3 Je les déplace en mettant ma souris sur un des cadres jaune et je tire.
4 Ensuite je fais la même chose mais avec le bouton icône de déplacement.
5 Je fait un alignement à gauche

Et en reproduisant les étapes 3.4.5 on arrive à avoir les bizarreries...

A partir de là rien ne va plus...
- plusieurs processus Panoramic sont lancés.
- Les boutons icônes se baladent sur l'écran.
- Et les objets changent de tailles.

Edit: si clic sur stop, les boutons icônes restent visible.
Ensuite si on clic sur ces icônes les objets changent de taille.


Aie aie aie... Hum... je crains qu'il y est comme un problème...
jocolor rendeer scratch Suspect affraid
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 19:53

C'est bien comme ça que j'ai testé:
Citation :
1. Je commence par sélectionner le choix multique des objets dans la liste en haut.
2. Je sélectionne avec la touche CTRL plusieurs objets.
3 Je les déplace en mettant ma souris sur un des cadres jaune et je tire.
4 Ensuite je fais la même chose mais avec l’icône de déplacement.

En (4), seul le cadre dans lequel se trouve l'icône se déplace. Pas de problème apparent.

5. je tire un des autres cadres ==> tous les cadres y compris les icônes se déplacent, synchronisés, sans problème.

6. je tire une autre icone ==> le cadre associé se déplace, rien d'autre.

7. je tire encore un autre cadre ==> toute l'escadrille suit, sans problème.

Là, pour le coup, je n'arrive pas à produire ce que tu décris. As-tu repris la version modifiée du programme de démo, postée ci-dessus ? La seule différene par rapport à la version précédente est la ligne
Code:
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
ajoutée à la fin de la boucle dans la routine "change".
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 19:58

Bonsoir Klaus !

En fait le problème apparaît lorsque tu STOP la multi-sélection.
L'icône flèche reste visible sur les objets.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 4 Jan 2018 - 20:50

ah... encore un truc qui a échappé... je vais voir ça.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 2:25

Nouvelle version:
KGF.dll V8.29 du 05/01/2018

Nouveautés:
- Designer: gérer correctement a suppression des ObjectMover en cas de multi-sélection

Modules modifiés:
KGF.dll

La doc es inchangée. Les sources seront à jour prochainement.

Pour que ça marche tout à fait bien, il faut ajouter:
Code:

label close0
on_close 0,close0
...
close0:
  res% = dll_call1("KillProcessByHandle",handle(0))
  return
 

Voici le programme de démo modifié:
Code:
' pb_designer.bas

label click, fin, CT, desel, chg, change, aligner, dump, close0

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner


' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)
on_close 0,close0

' gosub dump

end

close0:
  res% = dll_call1("KillProcessByHandle",handle(0))
  return
 
dump:
memo 177 : full_space 177 : bar_both 177
left 12,1234
top 12,2345
width 12,432
height 12,321
res% = dll_call3("DumpPanoramic",handle(177),object_internal(13),150)
' item_add 177,"handle=$"+hex$(handle(13))+"="+str$(handle(13))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6))
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  obj% = number_click
  parent% = parent(obj%)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
'  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  select item_index(4)
    case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé
    case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  select selmode%
    case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé
    case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return

Et un petit cadeau pour la Nouvelle Année (pas encore documentée):
Code:
' test_Companion.bas

label creer, supprimer

dim res%, CO%, f$

combo 1
  item_add 1,"Rectangle"
  item_add 1,"Rectangle arrondi"
  item_add 1,"Ellipse"
button 2 : left 2,width(1) : caption 2,"Créer" : on_click 2,creer
button 3 : left 3,left(2)+width(2) : caption 3,"Supprimer" : on_click 3,supprimer

open_dialog 9 : filter 9,"Images (BMP,JPG,PNG,GIF)|*.bmp;*.jpg;*.png;*.gif"
dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(1),3)

end

creer:
  f$ = file_name$(9)
  ' créer le compagnon
  CO% = dll_call3("Companion",item_index(1),100,100)
  if file_exists(f$)=0 then f$ = "_"
  ' éventuellement charger une image de fond
  if f$<>"_" then res% = dll_call2("LoadCompanionImage",CO%,adr(f$))
  ' démarrer le,magnétisme
  res% = dll_call2("ManageCompanion",CO%,1)
  return
 
supprimer:
  ' supprimer le compagnon
  CO% = dll_call1("DeleteCompanion",CO%)
  return
Après le lancement, choisir une des 3 formes dans la combo en haut à gauche (ellipse par défaut), puis cliquer sur "Créer". Sélectionner une petite image dans le dialogue qui s'ouvre, puis admirer. En cas d'overdose, cliquer sur "Supprimer" ou sortir par la croix rouge...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 9:11

Bonjour Klaus

Il y a toujours des problèmes avec la sélection multiple. Il y a des plantages...

1er cas :
1. Je commence par faire le choix de la sélection multiple.
2. Ensuite je sélectionne plusieurs objets. moi j'en ai pris 3.
3. J'appuie sur STOP et repasse sur le choix d'un seul objet.
4. lorsque je clique de nouveau sur l'un des objet, il ne se passe plus rien
5. Si je clique sur STOP de nouveau il y a un plantage en ligne 131 !

2eme cas :
1. Je commence par faire le choix de la sélection multiple.
2. Ensuite je sélectionne plusieurs objets. (toujours 3 sélections).
3. Je clique sur un objet non sélectionné,
4. Et là un carré complètement jaune apparaît sur le coin en haut à gauche avec un message d'erreur.

J'espère que tu vas t'en sortir... Bon courage ! drunken


Pour le petit cadeau de noël, je vois déjà une utilisation à la façon d'un HINT mais plus permanent...
Pour effectuer des taches un peu plus complexe et avoir l'explication en même temps. A voir !

Par contre je dois cliquer plusieurs fois sur SUPPRIMER pour que ça s'arrête ! Suspect
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 9:29

J'y retourne...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 11:56

Bonjour Klaus, Very Happy  et bonne année et bonne santé
Voilà, j'essaye d'utiliser les "DialButton", mais j'ai trouvé un léger problème! Je teste avec KGF V8.22, mais j'ai téléchargé la V8.29 la dernière version, et le problème est identique!
Lorsque j'utilise la fonction "SetDialButtonIndicator" en ligne 19 de mon petit programme de test, il y a un message qui apparait: Message Show. il faut que je clique sur OK pour que tout s'affiche normalement après. Ceci n'apparait que pour les boutons de type 2.
Voici mon programme test:
Code:
dim res%,db1%,db2%,db3%,img$
label close0,indiq
img$="C:\TEST\type2k11.jpg"
container 10:width 10,200:height 10,80:left 10,20:top 10,20:' color 10,52,56,62
font_name 10,"Arial":font_bold 10:font_size 10,10
caption 10," OSC1       OSC2       OSC3 "
edit 11:hide 11:text 11,"25":on_change 11,indiq
edit 12:hide 12:text 12,"50":on_change 12,indiq
edit 13:hide 13:text 13,"25":on_change 13,indiq
alpha 21:parent 21,10:width 21,50:left 21,025:top 21,55
alpha 22:parent 22,10:width 22,50:left 22,085:top 22,55
alpha 23:parent 23,10:width 23,50:left 23,145:top 23,55
dll_on "c:\TEST\KGF829.dll"
on_close 0,close0


db1% = dll_call3("CreateDialButton",handle(10),2,1)        :' typ%=2 (image bouton):ID%=1 identifiant du dialbutton
res% = dll_call2("LoadDialButtonImage",db1%,adr(img$))     :' db1% numéro bouton, img$=fichier image du bonton
res% = dll_call6("SetDialButtonIndicator",db1%,3,2,255,0,0):' db1% numéro bouton, 3=type 2 rotation pointeur ligne, 2=longueur pointeur, couleur pointeur RGB
res% = dll_call4("LocateDialButton",db1%,20,15,30)         :' db1% numéro bouton, positions x%=20 et y%=15, diamètre=30
res% = dll_call4("ConfigureDialButton",db1%,100,0,25)      :' db1% numéro bouton, max=100, min=0, position du bouton=25  
res% = dll_call3("SetDialButtonResultMode",db1%,3,handle(11)) : ' résultat dans edit 11

db2% = dll_call3("CreateDialButton",handle(10),1,2)    :' typ%=1 (simple disque rotatif):ID%=2 identifiant du dialbutton
res% = dll_call4("LocateDialButton",db2%,80,15,30)     :' db2% numéro bouton, positions x%=80 et y%=15, diamètre=30
res% = dll_call4("SetDialButtonColor",db2%,100,100,230):' db2% numéro bouton, 100=R, 100=G, 230=B
res% = dll_call4("ConfigureDialButton",db2%,100,0,50)  :' db2% numéro bouton, max=100, min=0, position du bouton=50
res% = dll_call3("SetDialButtonResultMode",db2%,3,handle(12)) : ' résultat dans edit 12

db3% = dll_call3("CreateDialButton",handle(10),1,3)  :' typ%=1 (simple disque rotatif):ID%=3 identifiant du dialbutton
res% = dll_call4("LocateDialButton",db3%,140,15,30)  :' db3% numéro bouton, positions x%=140 et y%=15, diamètre=30
res% = dll_call4("ConfigureDialButton",db3%,100,0,25):' db3% numéro bouton, max=100, min=0, position du bouton=25  
res% = dll_call3("SetDialButtonResultMode",db3%,3,handle(13)) : ' résultat dans edit 13
gosub indiq
end

indiq:
caption 21,text$(11):caption 22,text$(12):caption 23,text$(13)
return

close0:
  res% = dll_call1("DeleteDialButton",db1%)
  res% = dll_call1("DeleteDialButton",db2%)
  res% = dll_call1("DeleteDialButton",db3%)
  dll_off
return
Je pense que c'est un oubli dans la mise au point de ta fonction.
A+ Wink Wink Wink
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 13:15

Oui, en effet ! Merci de l'avoir signalé. C'est corrigé dans le source de KGF.dll, suite à ton message, mais il faudra que je finisse la correction du Designer avec ObjectMover avant de refaire une distribution, car sinon, il n'y aura plus grand chose en état de marche...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 14:54

Nouvelle version:
KGF.dll V8.30 du 05/01/2018

Nouveautés:
- Designer: début de la refonte totale, désactivation de certaines fonctions
- ObjectMover: correction d'un bug en suppression
- Novelles fonctions: CreateDesigner, DeleteDesigner
- DialButton: suppresion d'un message de diagnostique


Modules modifiés:
KGF.dll

La doc es inchangée. Les sources seront à jour prochainement.

Le Designer ainsi que l'ObjectMover sont en cours de réécriture complète, suite aux incompatibilités entre ces deux objets. Cette nouvelle version apporte:
- un ObjectMover fonctionnel, bugs corrigés
- un Designer fonctionnel en mode sélection unique pour tous les objets visuels Panoramic
- deux nouvelles fonctions opérationnelles
- bloquage des anciennes fonctions RegisterObjectForDesigner et UnregisterObjectFromDesigner

Pour le moment, donc, ne pas tenter de faire une sélection multiple - ça plantera avec certitude. Par contre, en sélection unique, tout fonctionne. Dans le programme de démo, on peut sélectionner n'importe quel objet, le déplacer et/ou déformer. On peut utiliser le bouton "Stop" pour faire disparaître le Designer et sélectionner un autre objet, ou sélectionner un autre objet directement - l'ancien sera supprimé automatiquement avant de créer le nouveau. Il n'y a plus de plantage avec la sélection unique...

Voici la démo:
Code:
' pb_designer.bas

label click, fin, CT, desel, chg, change, aligner, dump, close0

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
dim DS%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner


' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)
on_close 0,close0

' gosub dump

end

close0:
  res% = dll_call1("KillProcessByHandle",handle(0))
  return
 
dump:
memo 177 : full_space 177 : bar_both 177
res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150)
item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6))
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  if DS%<>0
    select item_index(4)
      case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé
      case 2: ' rien à faire ici !
    end_select
  end_if

  obj% = number_click
  parent% = parent(obj%)
  select item_index(4)
    case 1: DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
  end_select
'  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
'  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  select item_index(4)
    case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé
    case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  select selmode%
    case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé
    case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return
Surtout, il faut utiliser le code ci-dessus pour tester, pas le code publié précédemment !

Accessoirement, le message de test dans DialButton est supprimé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 18:35

Merci Klaus, ça fonctionne super bien maintenant! Very Happy  Very Happy  Very Happy
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyVen 5 Jan 2018 - 18:39

Chouette !

Je suis en train de coderles déplacements en multi-sélection. La multi-selection en elle-même marche, ainsi que la suppression de la multi-sélection (pas encore dans la version qui a été publié, mais ici, au "labo").
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 1:16

Nouvelle version:
KGF.dll V8.31 du 10/01/2018

Nouveautés:
- Designer: fin de la refonte totale
- retrait des fonctions UnregisterObjectFromSizeControl, RegisterObjectForSizeControl
- nouvelles fonctions: CreateDesigner, CreateSelectedDesigner, CreateDesignerSelection
- DesignerFunction: redéfinition et réécriture des codes opérations
- implémentation correcte de la sélection multiple d'objets
- DesignerFunction: code 2 = retourner dans un mémo le code Panoramic pour les objets sélectionnés en multi-sélection


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Le programme de démo a été modifié pour gérer cette nouvelle version. Il permet de faire une sélection multiple d'objets et de les déplacer simultanément en tirant un quelconque des objets sélectionnés par le bord jaune des Designers qui entourent les objets sélectionnés, ou un seul en tirant l'icône du ObjectMover associé. Un clic sur un objet non encore sélectionné l'ajoute à la sélection et crée son Designer. Un clic sur un objet déjà sélectionné le retire de la sélection et supprime son Designer. Un clic sur le bouton "Panoramic" donne dans un mémo le code Panoramic pour créer les objets présents en multi-sélection. Ce mémo peut être caché (par HIDE) et peut être utilisé par un IDE pour générer une maquette decode.
Code:
' pb_designer.bas

label click, fin, CT, desel, chg, change, aligner, panoramic, dump

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
dim DS%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic


' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)

' gosub dump

end


dump:
memo 177 : full_space 177 : bar_both 177
res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150)
item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6))
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  obj% = number_click
  parent% = parent(obj%)

  if item_index(4)=1
    if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%) : ' libérer le ou les objets capturés
  else
    res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0)
    if res%<>0
      DS% = res%
      DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
      res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
      return
    end_if
  end_if
 
  select item_index(4)
    case 1: DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2: DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés
  res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  res% = dll_call1("CreateDesignerSelection",1)  : ' vider une sélection existante
  select selmode%
    case 1: DS% = dll_call1("DeleteDesigner",DS%)            : ' libérer l'objet capturé
    case 2: res% = dll_call1("CreateDesignerSelection",1)    : ' vider une sélection existante
  end_select
'  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return
 
panoramic:
  res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102))
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 19:57

Bonsoir klaus !

Je vois que tu as bien avancé et réussi à résoudre ce casse-tête ! Wink
Maintenant les déplacements d'un objet unique ou en groupe ne posent plus de soucis.
Pareil pour les redimensionnements. Bravo ! cheers

Cela dit, il reste encore quelques imperfections... drunken

Je trouve assez bizarre la possibilité de sélectionner des objets qui sont sur des parents différents.
car ensuite lors d'un alignement à gauche par exemple cela pose quelques problème de positionnement ! Suspect
Est ce un oubli de ta part. tu n'avais peut être pas prévu ce cas de figure...

D'autre part,
Suite à une sélection multiple d'objets sur différents parents et après les avoir déplacés et redimensionnés,
j'ai des difficultés pour désélectionner certains d'entre eux... geek

Désolé pour ces remarques. j'espère qu'elles t'aideront à la mise au point ! Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 20:41

Citation :
Est ce un oubli de ta part. tu n'avais peut être pas prévu ce cas de figure...
Ce n'est pas un oubli, mais je ne pensais pas que ça pouvait présenter un problème dans la "vraie vie", puisqu'en principe, on ne sélectionne pas au hasard, mais seulement les objets qu'on veut vraiment manipuler. Je bais voir ce que je peux faire à ce niveau...

Citation :
j'ai des difficultés pour désélectionner certains d'entre eux...
Je vais tenter de reproduire le problème et le résoudre.

As-tu essayé la touche "Panoramic" avec quelques objets en multi-sélection ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 20:57

Ah oui la touche Panoramic, j'avais pas vu ! Embarassed
Super l'idée ! Wink

Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 21:20

Merci !

En ce qui concerne la sélection simultanée d'objets de parents différents, j'ai trouvé un moyen simple de le détecter (et donc, de le refuser). Faut-il le faire ou faut-il laisser la liberté ? Pour moi, ce ne sont que quelques lignes de code à ajouter lors de la sélection d'un objet.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 21:30

Et pourquoi ne pas mettre une option avec quelque chose comme :

res%=CALL1(Designer_Option_Parent,o%)

où o% pourrait être à 0 ou 1 selon si l'on active ou pas l'option de sélection des objets sur plusieurs parents...

A toi de voir... drunken
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 22:23

Nouvelle version:
KGF.dll V8.32 du 10/01/2018

Nouveautés:
- CreateSelectedDesigner: reconnaître et traiter les parents des objets à sélectionner
- DesignerFunction: code 4 = autoriser/interdire des parents diférents des objets en multi-sélection (défaut: interdit)
- DesignerFunction codes 1 et 2: correctioin d'un bug


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sont à jour.

Par défaut, on bloque maintenant la sélection d'objets de parents différents en multi-sélection. Le code 4 de DesignerFunction permet de gérer l'autorpsation. De plus, un bug pour DesignerFunction codes 1 et 2 a été corrigé (en lien avec la désélection défaillante d'un objet en multi-sélection, dans certains cas).

Voici le programme de démo (adapté dans le sous-programme Click:
Code:
' pb_designer.bas

label click, fin, CT, desel, chg, change, aligner, panoramic, dump

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
dim DS%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic


' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)

' gosub dump

end


dump:
memo 177 : full_space 177 : bar_both 177
res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150)
item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)
  select item_index(4)
    case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
    case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6))
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  obj% = number_click
  parent% = parent(obj%)

  res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0)
  if res%<>0
    DS% = res%
    DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
    res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
    return
  end_if
 
  select item_index(4)
    case 1: DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2: DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
  end_select
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés
  res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  res% = dll_call1("CreateDesignerSelection",1)  : ' vider une sélection existante
  select selmode%
    case 1: DS% = dll_call1("DeleteDesigner",DS%)            : ' libérer l'objet capturé
    case 2: res% = dll_call1("CreateDesignerSelection",1)    : ' vider une sélection existante
  end_select
'  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return
 
panoramic:
  res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102))
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyMer 10 Jan 2018 - 22:57

Klaus, il y a un problème dès le départ...

Sans changer aucun paramètres je peux sélectionner plusieurs objets sur plusieurs parents.
Alors que tu dis que normalement l'option est désactivée par defaut pour les objets sur plusieurs parents. drunken

En plus la sélection du CONTAINER_TAB pour un seul objet provoque une erreur ! Suspect

Bon courage pour la suite... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 24 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 24 EmptyJeu 11 Jan 2018 - 0:49

Bon, c'était un problème du code Panoramic. Voici la version opérationnelle (pas de changement de KGF.dll):
Code:
' pb_designer.bas

label click, fin, CT, desel, chg, change, aligner, panoramic, dump

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
dim DS%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic


' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)

' gosub dump

end


dump:
memo 177 : full_space 177 : bar_both 177
res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150)
item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)

  select item_index(4)
    case 1
      res% = dll_call1("CreateDesignerSelection",1) : ' libérer une éventuelle sélection multiple
      DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
      DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2
      res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0)
      if res%<>0
        DS% = res%
        DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
        res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
      else
        DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
      end_if
  end_select
  
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  obj% = number_click
  parent% = parent(obj%)

  select item_index(4)
    case 1
      res% = dll_call1("CreateDesignerSelection",1) : ' libérer une éventuelle sélection multiple
      DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
      DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2
      res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0)
      if res%<>0
        DS% = res%
        DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
        res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
      else
        DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
      end_if
  end_select
  
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés
  res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  res% = dll_call1("CreateDesignerSelection",1)  : ' vider une sélection existante
  select selmode%
    case 1: DS% = dll_call1("DeleteDesigner",DS%)            : ' libérer l'objet capturé
    case 2: res% = dll_call1("CreateDesignerSelection",1)    : ' vider une sélection existante
  end_select
'  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return
  
panoramic:
  res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102))
  return

EDIT

On peut même simplifier. Car le traitement pour un objet cliqué ou celui du container_tab est le même, seul change l'identification de l'objet, puisque container_tab n'a pas d'évènement on_click. Et maintenant avec une petite case à cocher pour autoriser les parents différents en sélection muliple:
Code:
' pb_designer.bas

label click, objet, fin, CT, desel, chg, change, aligner, panoramic, parents, dump

dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
dim DS%

full_space 0 : width 0,width(0) - 200
button 1 : width 1,100 : caption 1,"Container_tab"  : on_click 1,CT
button 2 : width 2,100 : caption 2,"Stop"  : on_click 2,fin : left 2,100
combo  3 : width 3,150 : left 3,210
  item_add 3,"Cadre intérieur"
  item_add 3,"Cadre extérieur"
combo 4  : width 4,150 : left 4,370 : on_click 4,chg
  item_add 4,"Un objet seul"
  item_add 4,"Sélection d'objets"
alpha 5  : left 5,540 : caption 5,"Largeur de grille magnétique:"
spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1
combo 7 : left 7,750 : width 7,180
  item_add 7,"Aucun alignement"
  item_add 7,"Alignement à gauche"
  item_add 7,"Alignement en haut"
  item_add 7,"Alignement à droite"
  item_add 7,"Alignement en bas"
  item_add 7,"Alignement en largeur"
  item_add 7,"Alignement en hauteur"
  item_add 7,"Alignement en largeur et hauteur"
  text 7,item_read$(7,1)
button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic
check 14 : left 14,1040 : top 14,30 : width 14,100 : caption 14,"Parents différents" :on_click 14,parents

' les 3 objets suivants pourront être déplacés et/ou redimensionnés
memo 10 : top 10,40 : on_click 10,click
alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click
button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click
picture 13 : top 13,400 : left 13,400 : on_click 13,click

container 30 : top 30,150 : left 30,10 : caption 30,"Mon container"
  width 30,300 : height 30,200 : on_click 30,click
list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click
  item_add 31,"Cliquer ici"

container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300
tab 41 : parent 41,40 : caption 41,"Premier onglet"
tab 42 : parent 42,40 : caption 42,"Deuxième onglet"
tab 43 : parent 43,40 : caption 43,"Troisième onglet"

alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click
alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click
alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click

form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200
  caption 100,"Objets sélectionnés"
list 101 : parent 101,100 : full_space 101 : on_click 101,desel
memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100
  bar_both 102
  on_change 102,change : ' hide 102

dll_on "KGF.dll"
res% = dll_call2("SelectComboBoxItem",handle(3),2)
res% = dll_call2("SelectComboBoxItem",handle(4),1)
selmode% = item_index(4)

' gosub dump

end


dump:
memo 177 : full_space 177 : bar_both 177
res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150)
item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12))
return


change:
  for i%=1 to count(102)
    s$ = trim$(item_read$(102,i%))
    if s$="" then return
    p% = instr(s$,",")
    obj% = val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    left obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    top obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    p% = instr(s$,",")
    width obj%,val(left$(s$,p%-1))
    s$ = mid$(s$,p%+1,100)
    height obj%,val(s$)
    res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
  next i%
  return

CT:
  obj% = 40
  parent% = parent(40)
 
  gosub objet
  return

click:
'  res% = dll_call1("TestKGF",object_internal(number_click))
'  return

  obj% = number_click
  parent% = parent(obj%)

objet:
  select item_index(4)
    case 1
      res% = dll_call1("CreateDesignerSelection",1) : ' libérer une éventuelle sélection multiple
      DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
      DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
    case 2
      res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0)
      if res%<>0
        DS% = res%
        DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection
        res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
      else
        DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1)
      end_if
  end_select
 
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
  return

fin:
  DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés
  res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

desel:
  s$ = item_read$(101,item_index(101))
  n% = val(s$)
  res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0)
  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  return

chg:
  res% = dll_call1("CreateDesignerSelection",1)  : ' vider une sélection existante
  select selmode%
    case 1: DS% = dll_call1("DeleteDesigner",DS%)            : ' libérer l'objet capturé
    case 2: res% = dll_call1("CreateDesignerSelection",1)    : ' vider une sélection existante
  end_select
'  res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0)
  selmode% = item_index(4)
  return
 
aligner:
  res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1)
  return
 
panoramic:
  res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102))
  return
 
parents:
  res% = dll_call6("DesignerFunction",4,0,0,0,0,checked(14))
  return


Dernière édition par Klaus le Jeu 11 Jan 2018 - 9:16, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





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

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

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: