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
» trop de fichiers en cours
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar lepetitmarocain Aujourd'hui à 10:32

» Bataille navale SM
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar leclode Dim 21 Avr 2024 - 18:09

» 2D_fill_color(résolu)
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

 

 KGF.dll - demandes ou suggestions de modifications ou ajouts

Aller en bas 
+7
papydall
Oscaribout
Marc
Pedro
Minibug
pascal10000
Klaus
11 participants
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant
AuteurMessage
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 24 Mar 2022 - 14:11

Citation :
Lorsque le FORM est sélectionné par le DESIGNER je suis bien obligé de bloqué son déplacement et son dimensionnement sinon le DESIGNER ne suis pas. On est bien d'accord ?
Ben, non, en fait ! Si tu utilses le Designer pour traiter un objet FORM, il faut laisser l'objet FORM entièrement libre et déplacer ou redimensionner le Designer, pas la form ! Alors, les USER_EVENT donneeront les informations comment adapter le form en fonction des movements du Designer. Pas l'inverse.
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 24 Mar 2022 - 14:23

OK je reprends tout ça ce soir et je te tiens au courant. Merci.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 24 Mar 2022 - 18:18

D'ailleurs, si tu veux configurer une form dans un IDE, nul besoin du Designer ! Je te donne la technique (valable uniquement pour un objet FORM).

En fait, une form est en réalité son propre designer. Tu oeux aisément la déplacer ou changer ses dimensions à l'aide de la souris. Tu me diras bien sûr que, dans ce cas, ton IDE ne connait pas les changements intervenus. C'est là qu'intervient mon astuce, en 100 % Panoramic:
- dès qu'un objet FORM est sélectionné, tu actives un timer avec une intervalle assez courte (500 ms par exemple).
- dans la routine ON_TIMER de ce timer, tu mémorises les valeurs LEFT(), TOP(), WIDTH() et HEIGHT() de la FORM activée.
- tu stoppes ce timer dès qu'un autre objet est sélectionné.

Tu voulais une form sans bord, ou sans barre de titre, en bref une FORM handicapée ? Rien de plus simple. Lorsqu'elle est sélectionné, tu lui remets justement les attrbuts par défaut. Tu peux ainsi la tirer normalement. Puis, lorsqu'elle est désélectinnée, tu lui remets ces attributs handicpants...

Tu vois, pour une FORM, c'est très simple, en réalité. Le Designer devient un nécessité pour les autres objets pour lequels cette astuce ne marche pas, évidemment.
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 24 Mar 2022 - 22:03

Rien ne vaut un bon exemple...

J'ai mis en évidence 2 codes pour que tu puisses voir ce que je veux faire.
Le 1er avec un form libre et le 2eme avec un form fixe.

Dans le 1er test ci-dessous, j'ai repris ton code en changeant juste la ligne 16 pour mettre un form au lieu du memo.
et le designer ne fonctionne pas dans ce cas de figure ! Enfin si il fonctionne mais pas en synchro sur le form !

C'est pourquoi j'avait décidé de bloquer le déplacement, l'agrandissement et les boutons.
Et comme cela le designer fonctionne ! Sauf le problème énoncé précédemment.

La raison pour laquelle je souhaite utiliser le designer sur le form c'est déjà pour une question de standard (tous les objets sont traités de la même façon).
et ensuite si je n'utilise pas designer sur le form, je suis bloqué par la commande ON_MOVE qui ne fonctionne que sur le FORM 0.
Donc impossible de traiter le déplacement. C'est pour cette raison que j'ai procédé de cette façon !

Sur le second code le soucis apparait lorsqu'on clique sur le bord du form ou lors d'un clique dans la barre de titre avec déplacement vers le haut à gauche.
Pour faire le test du second code, il faut d'abord écarter le form du coin en haut à gauche avec le designer. et faire le test indiqué ci-dessus ensuite.

Code avec FORM non bloqué:

Code avec FORM bloqué:
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 24 Mar 2022 - 23:41

Je ne comprends pas ton problème. Les deux codes fonctionnent parfaitement, sans acccroc, sans perte de lien entre le Designer le la form à gérer. Certes, ayant un cadre très mince, iol faut bien viser pour attrapper le cadre ou les poignées. Mais tout marche bien.

J'ai pris tes deux codes tels quels, juste en ajustant le chemin vers KGF.dll à ma configuration. Mais attention; pour déplacer ou changer de dimensions, il faut utiliser uniquement le Designer et ne jamais tirer sur la form. Pour cela, tu peux ajouter la ligne "inactive 10" juste aprèe la creation de la form. Aucune incidence sur le Designer, mais plus de risque d'attrapper la form par mégarde.
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyVen 25 Mar 2022 - 9:03

Bonjour Klaus !

Klaus a écrit:
Mais attention; pour déplacer ou changer de dimensions, il faut utiliser uniquement le Designer et ne jamais tirer sur la form

Alors là c'est pas gagné ! Very Happy
Je vais voir en mettant la form en inactive ce que ça donne.

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

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyVen 25 Mar 2022 - 21:47

En fait, c'est simple, Minibug. TAnt que tu es avec l'utilisation du Designer, tu es en réalité dans ton IDE pour construire l'interface visuelle. Donc, ton objet Form n'a pas de fonction propre - il est juste là pour l'aspect visuel.

Donc, immédiatement après sa creation par la commande FORM, tu le désactives oar la commande INACTIVE et c'est tout. A partir de ce moment, tu peux le traiter comme n'importe quel objet.

Tu peux bien sûr affiner la chose en le déactivant uniquement lors de sa sélection pour le Designer, puis le réactiver lorsqu'il n'est plus attaché au Designer. A toit de voir...
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyVen 25 Mar 2022 - 23:19

Merci pour ces précisions Klaus. Wink

Je n'ai pas eu le temps de regarder aujourd'hui. Je testerai demain.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 26 Mar 2022 - 12:14

Bonjour Klaus !

Lorsque j'inactive les FORMs les déplacements et les agrandissements sont corrects.
Mais je n'ai plus accès aux objets dans la FORM et donc plus de sélection et déplacement possible...

Donc j'en suis toujours au même point ! Mad scratch geek

Edit 13:35 :
Bon après pas mal de cheveux perdus (déjà qu'il en reste pas beaucoup... hihihi !) j'ai enfin trouvé un fonctionnement correct.
C'est pas encore parfait mais ca commence à prendre forme...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyDim 27 Mar 2022 - 0:58

Citation :
Mais je n'ai plus accès aux objets dans la FORM et donc plus de sélection et déplacement possible...
J'entends bien, mais c'est justement ! Pourquoi ne pas inactiver la form ai moment de l'attacher au Designer et la réactiver lorsqu'elle en est détachée - je n'arrive pas à comprendre ce qui pose problème avec ce scénario...

EDIT 27/03/2022 à 22:08

Voici une "proof of concept" de ce que je propose:
Code:
' test_designer.bas

label user_event

dim res%, i%, s$, obj%, DS%, p%, MaskOrigin%, MaskOperation%, MaskPanoramic%, MaskLow%, MaskHigh%
dim MoveAction%, SizeAction%, ll%, tt%, ww%, hh%, action%, WParam%, LParam%
MaskOrigin% = hex("FF000000")
MaskOperation% = hex("00FF0000")
MaskHigh% = hex("FFFF0000")
MaskLow% = hex("0000FFFF")
MaskPanoramic% = hex("0000FFFF")
MoveAction% = hex("00030000")
SizeAction% = hex("00040000")

dll_on "KGF.dll"

' memo 10 : ' mémo à traiter
form 10
inactive 10 : ' <============ après la suppression du Designer, faire activate 10 !
memo 123 : hide 123 : bar_both 123
' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
'  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
DS% = dll_call6("CreateDesigner",10,handle(0),handle(123),object_internal(10),1,3)
' l'appel suivant impose une grille magnétique de 24 pixels
 res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)

on_user_event user_event
end

user_event:
  if bin_and(USER_EVENT_WPARAM,MaskOrigin%)<>0 then return      : ' pas venant du designer ?
  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM
  action% = bin_and(WParam%,MaskOperation%)/65536
  select action%
    case 3
      obj% = bin_and(WParam%,MaskPanoramic%)
      ll%  = bin_and(LParam%,MaskHigh%)/65536
      tt%  = bin_and(LParam%,MaskLow%)
      left obj%,ll%
      top obj%,tt%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(left(10))+","+str$(top(10))+"  "+hex$(USER_EVENT_WPARAM)+"  "+hex$(USER_EVENT_LPARAM)
      return
    case 4
      obj% = bin_and(WParam%,MaskPanoramic%)
      ww%  = bin_and(LParam%,MaskHigh%)/65536
      hh%  = bin_and(LParam%,MaskLow%)
      width obj%,ww%
      height obj%,hh%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(width(10))+","+str$(height(10))
      return
  end_select
  return

C'est bien une FORM gérée par le Designer, et il n'y a aucun décalage ni désynchronisation.
Je pense que c'est la solution.
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyMer 30 Mar 2022 - 19:49

Bonjour Klaus !

Bon je crois que je vais abandonner le projet...

La gestion des forms me pose trop de soucis...
J'ai une erreur dans les activation désactivation des forms et je n'arrive pas à m'en défaire !

Et comme tout cela est lié au système de sélection des objets et du treeview ça devient insoluble...
Et je n'ai pas envie de tout reprendre...

Sur le papier je reconnais que c'est plutôt simple mais une fois intégré dans le programme cela l'est beaucoup moins.
Et puis dans ton exemple tu gère un objet fixe donc oui là c'est simple. Wink
Mais si l'on commence à mettre plusieurs forms avec une sélection et des objets dedans, là ça se corse...

J'ai 2 solutions :
- Reprendre toute la gestion du treeview et des objets en intégrant le designer de KGF. Travail considérable en sachant que j'y suis depuis un certain temps...
- Garder le programme tel qu'il était avant l'intégration du designer et tenter une configuration 100% Panoramic.
Mais là c'est pareil j'ai des limitations Comme le ON_MOVE qui ne réagit que sur la form 0

Voilà ou j'en suis pour le moment. Déçu de ne pas pouvoir mettre ça en place et que ça fonctionne correctement. Mad
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 31 Mar 2022 - 18:07

Dommage... Et pourtant, ça marche ! Regarde cette démo:
Code:
' test_designer.bas

label user_event, select_10, select_11, deselect

dim res%, i%, s$, obj%, DS%, p%, MaskOrigin%, MaskOperation%, MaskPanoramic%, MaskLow%, MaskHigh%
dim MoveAction%, SizeAction%, ll%, tt%, ww%, hh%, action%, WParam%, LParam%

MaskOrigin% = hex("FF000000")
MaskOperation% = hex("00FF0000")
MaskHigh% = hex("FFFF0000")
MaskLow% = hex("0000FFFF")
MaskPanoramic% = hex("0000FFFF")
MoveAction% = hex("00030000")
SizeAction% = hex("00040000")

dll_on "KGF.dll"

' memo 10 : ' mémo à traiter
form 10
inactive 10 : ' <============ après la suppression du Designer, faire activate 10 !
button 101 : parent 101,10 : left 101,30 : top 101,50
form 11      : top 10,50 : left 11,400
inactive 11  : top 11,50

main_menu 1000
  sub_menu 1001 : parent 1001,1000 : caption 1001,"Sélectionner form 1O"
    on_click 1001,select_10
  sub_menu 1002 : parent 1002,1000 : caption 1002,"Sélectionner form 11"
    on_click 1002,select_11
  sub_menu 1003 : parent 1003,1000 : caption 1003,"Désélectionner"
    on_click 1003,deselect
   

memo 123 : hide 123 : bar_both 123

on_user_event user_event
end

select_10:
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",10,handle(0),handle(123),object_internal(10),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return
 
select_11:
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",11,handle(0),handle(123),object_internal(11),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return   
 
deselect:
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  return
 
user_event:
  if bin_and(USER_EVENT_WPARAM,MaskOrigin%)<>0 then return      : ' pas venant du designer ?
  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM
  action% = bin_and(WParam%,MaskOperation%)/65536
  select action%
    case 3
      obj% = bin_and(WParam%,MaskPanoramic%)
      ll%  = bin_and(LParam%,MaskHigh%)/65536
      tt%  = bin_and(LParam%,MaskLow%)
      left obj%,ll%
      top obj%,tt%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(left(10))+","+str$(top(10))+"  "+hex$(USER_EVENT_WPARAM)+"  "+hex$(USER_EVENT_LPARAM)
      return
    case 4
      obj% = bin_and(WParam%,MaskPanoramic%)
      ww%  = bin_and(LParam%,MaskHigh%)/65536
      hh%  = bin_and(LParam%,MaskLow%)
      width obj%,ww%
      height obj%,hh%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(width(10))+","+str$(height(10))
      return
  end_select
  return


 

Deux forms, dont une avec un bouton.
Au départ, rien n'est sélectionné.
Le menu te permet de sélectionner une form ou l'autre et de la changer par le Designer.
Le bouton dans la form suit docilement les déplacements de la form.
Tu peux aussi désélectionner.
Mais sélectionner une form directement alors qu'une autre est encore sélectionnée, ça marche aussi...
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 31 Mar 2022 - 19:04

Bonsoir Klaus !

Aucun doute que le designer fonctionne ! Very Happy

Le problème vient incontestablement de mon programme. Je ne mets pas en doute le bon fonctionnement de KGF.
Mon programme devient une telle usine à gaz encore une fois...

En plus de ce que tu présente j'ai fais en sorte que l'on puisse cliquer sur les objets pour les sélectionner. Enfin ceux qui sont cliquables...
Et je crois bien que mon problème vient de là....

Je suis en train de remonter le fil petit à petit pour tenter de démêler tout ça !
Je suis en vacances semaine prochaine, j'aurai plus de temps à y consacrer...

Je te tiens au courant. Merci pour ton aide ! Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 31 Mar 2022 - 21:16

Alors, essaie le code qui suit. Un simple clic dans une des deux forms la sélectionne et l'attache au Designer.
Code:
' test_designer.bas

label user_event, select_10, select_11, deselect

dim res%, i%, s$, obj%, DS%, p%, MaskOrigin%, MaskOperation%, MaskPanoramic%, MaskLow%, MaskHigh%
dim MoveAction%, SizeAction%, ll%, tt%, ww%, hh%, action%, WParam%, LParam%

MaskOrigin% = hex("FF000000")
MaskOperation% = hex("00FF0000")
MaskHigh% = hex("FFFF0000")
MaskLow% = hex("0000FFFF")
MaskPanoramic% = hex("0000FFFF")
MoveAction% = hex("00030000")
SizeAction% = hex("00040000")

dll_on "KGF.dll"

' memo 10 : ' mémo à traiter
form 10
button 101 : parent 101,10 : left 101,30 : top 101,50
form 11      : top 10,50 : left 11,400

on_click 10,select_10
on_click 11,select_11

main_menu 1000
  sub_menu 1001 : parent 1001,1000 : caption 1001,"Sélectionner form 1O"
    on_click 1001,select_10
  sub_menu 1002 : parent 1002,1000 : caption 1002,"Sélectionner form 11"
    on_click 1002,select_11
  sub_menu 1003 : parent 1003,1000 : caption 1003,"Désélectionner"
    on_click 1003,deselect
   

memo 123 : hide 123 : bar_both 123

on_user_event user_event
end

select_10: 
  active 11
  inactive 10 : ' <============ après la suppression du Designer, faire activate 10 !
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",10,handle(0),handle(123),object_internal(10),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  ' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return
 
select_11:
  active 10
  inactive 11 : ' <============ après la suppression du Designer, faire activate 10 !
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",11,handle(0),handle(123),object_internal(11),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  ' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return   
 
deselect:
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  return
 
user_event:
  if bin_and(USER_EVENT_WPARAM,MaskOrigin%)<>0 then return      : ' pas venant du designer ?
  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM
  action% = bin_and(WParam%,MaskOperation%)/65536
  select action%
    case 3
      obj% = bin_and(WParam%,MaskPanoramic%)
      ll%  = bin_and(LParam%,MaskHigh%)/65536
      tt%  = bin_and(LParam%,MaskLow%)
      left obj%,ll%
      top obj%,tt%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(left(10))+","+str$(top(10))+"  "+hex$(USER_EVENT_WPARAM)+"  "+hex$(USER_EVENT_LPARAM)
      return
    case 4
      obj% = bin_and(WParam%,MaskPanoramic%)
      ww%  = bin_and(LParam%,MaskHigh%)/65536
      hh%  = bin_and(LParam%,MaskLow%)
      width obj%,ww%
      height obj%,hh%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(width(10))+","+str$(height(10))
      return
  end_select
  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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 31 Mar 2022 - 23:09

Merci Klaus !

J'ai passé toutes ces étapes depuis un bon moment...

Le soucis que j'ai rencontré en fait c'est lors de l'intégration du nouveau designer alors que toute la gestion objet était réalisée depuis un moment.
Et c'est là que les problèmes sont apparus !

Mais je pense avoir mis le doigt sur le bug...
En fait j'ai un double appel dans une SUB qui génère un bug au 2ème passage en trouvant sur son chemin un DIR_LOCAL alors que la variable locale est déjà créée.
Concrètement, il y a un second appel à la SUB alors que le premier n'est pas terminé.

Et cela se produit lors d'un appel par ON_ACTIVATE ou ON_CLIC sur le FORM.
Ces 2 appels sont nécessaires pour 2 gestions différentes du form.

La parade que j'ai trouvé pour le moment c'est que si la variable locale existe alors on sort de la SUB. Et là plus de bug !
C'est pas très glorieux comme technique mais cela semble fonctionner. Surprised

Je reviens vers toi dans le weekend ou début de semaine pour la suite.
Encore merci. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyVen 1 Avr 2022 - 2:32

l'important est vraiment d'inactiver l'objet sélectionné et attaché au Designer au moment deson attachement, et de le réactiver dès qu'il est détaché du Designer. Et, d'ailleurs, pour cela, il faut supprimer le Designer et le recréer lors de l'attachement à un autre objet, tel que c'est fait dans la dernière démo.

Dans ce cas, tu n'auras plus le problème d'activation d'une sub alors qu'elle n'a pas fini, tout simplement parce qu'il n'y a plus d'évènement supplémentaire. Et en ce qui concerne la sélection par programme,, comme dans la démo, il fait tester si la variable contenant le Designer (DS% dans le cas de la démo) est différent de zéro. Il faut alors d'abord supprimer le Désigner, réactiver l'objet attaché et recréer le Designer pour qu'il gère un autre objet. Tout cela est visible dans la démo.

EDIT 01/01/2022 à 17:40

Ce n'est pas un poisson d'Avril, mais j'ai pensé à un problème qui pourrait causer des ennuis de synchronisation entre un objet Panoramic et le Designer chargé de le "configurer".

Tant que tu n'agis que par le Designer, tout ira bien. Mais si tu changes la position ou les dimensions de l'objet encadré par le programme Panoramic, la synchronisation avec le Designer est rompue et inpossible à récupérer.

Conseil:
Si position ou dimensions doivent être changées par le programme Panoramic, alors procéder comme suit:
- tout d'abord, supprimer le Designer
- changer ce qu'il faut
- recréer un Designer
- attacher l'objet modifié auDesigner

Alors, il n'y aura plus de problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 11:05

Voici une version du progamme de démo un peu plus explicite.
Il y a toujours les deux forms, mais la form 10 contient un bouton maintenant.
On peut sélectionner n'importe lequel de ces objets et le modifier par le designer qui apparait.
Le menu permet de désélectionner l'objet sélectionné, quel qu'il soit.
Un bouton permet de déplacer l'objet sélectiionné par programme.
On peut ainsi agir sur n'importe lequel de ces objets.
Une variable objet_selectionne% contient le numéro de l'objet sélectionné actuellement.
Une variable parent_selectionne% contient le parent de l'objet sélectionné actuellement.
Cette dernière peut être remplacée par l'appel de la fonction parent(objet_selectionne%).

Observe surtout l façon dont on déplace (ou redimensiionne, c'est pareil) un objet sélectionné:
- supprimer le Designer
- déplacer l'objet
- recréer le designer

Code:
' test_designer.bas

label user_event, select_10, select_11, select_101, move, deselect

dim res%, i%, s$, obj%, DS%, p%, MaskOrigin%, MaskOperation%, MaskPanoramic%, MaskLow%, MaskHigh%
dim MoveAction%, SizeAction%, ll%, tt%, ww%, hh%, action%, WParam%, LParam%
dim objet_selectionne% : objet_selectionne% = -1
dim parent_selectionne% : parent_selectionne% = -1

MaskOrigin% = hex("FF000000")
MaskOperation% = hex("00FF0000")
MaskHigh% = hex("FFFF0000")
MaskLow% = hex("0000FFFF")
MaskPanoramic% = hex("0000FFFF")
MoveAction% = hex("00030000")
SizeAction% = hex("00040000")

dll_on "KGF.dll"

' memo 10 : ' mémo à traiter
form 10    : top 10,30 : left 10,width(0)+30
button 101 : parent 101,10 : left 101,30 : top 101,50
form 11      : top 11,top(10)+height(10)+20 : left 11,width(0)+60

on_click 10,select_10
on_click 11,select_11
on_click 101,select_101

main_menu 1000
  sub_menu 1001 : parent 1001,1000 : caption 1001,"Sélectionner form 1O"
    on_click 1001,select_10
  sub_menu 1002 : parent 1002,1000 : caption 1002,"Sélectionner form 11"
    on_click 1002,select_11
  sub_menu 1004 : parent 1004,1000 : caption 1004,"Sélectionner button 101"
    on_click 1004,select_101
  sub_menu 1005 : parent 1005,1000 : caption 1005,"Déplacer l'objet sélectionné"
    on_click 1005,move
  sub_menu 1003 : parent 1003,1000 : caption 1003,"Désélectionner"
    on_click 1003,deselect

memo 123 : hide 123 : bar_both 123

on_user_event user_event
end

select_10:  
  if objet_selectionne%>0 then active objet_selectionne%
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  inactive 10 : ' <============ après la suppression du Designer, faire activate 10 !
  objet_selectionne% = 10
  parent_selectionne% = 0  
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",10,handle(0),handle(123),object_internal(10),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  ' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return
  
select_11:
  if objet_selectionne%>0 then active objet_selectionne%
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  inactive 11 : ' <============ après la suppression du Designer, faire activate 11 !
  objet_selectionne% = 11
  parent_selectionne% = 0
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",11,handle(0),handle(123),object_internal(11),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  ' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return    
  
select_101:
  if objet_selectionne%>0 then active objet_selectionne%
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  inactive 101 : ' <============ après la suppression du Designer, faire activate 101 !
  objet_selectionne% = 101
  parent_selectionne% = 10
  ' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
  '  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
  DS% = dll_call6("CreateDesigner",101,handle(10),handle(123),object_internal(101),1,3)
  ' l'appel suivant impose une grille magnétique de 24 pixels
  ' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)
  return    
  
move:
  if objet_selectionne%>0
    DS% = dll_call1("DeleteDesigner",DS%)
    top objet_selectionne%,top(objet_selectionne%) + 10
    left objet_selectionne%,left(objet_selectionne%) + 10
    DS% = dll_call6("CreateDesigner",objet_selectionne%,handle(parent_selectionne%),handle(123),object_internal(objet_selectionne%),1,3)
    ' l'appel suivant impose une grille magnétique de 24 pixels
    ' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)  
    end_if
  return
  
deselect:
  if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%)
  if objet_selectionne%>0 then active objet_selectionne%
  objet_selectionne%  = -1
  parent_selectionne% = -1
  return
  
user_event:
  if bin_and(USER_EVENT_WPARAM,MaskOrigin%)<>0 then return      : ' pas venant du designer ?
  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM
  action% = bin_and(WParam%,MaskOperation%)/65536
  select action%
    case 3
      obj% = bin_and(WParam%,MaskPanoramic%)
      ll%  = bin_and(LParam%,MaskHigh%)/65536
      tt%  = bin_and(LParam%,MaskLow%)
      left obj%,ll%
      top obj%,tt%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(left(10))+","+str$(top(10))+"   "+hex$(USER_EVENT_WPARAM)+"  "+hex$(USER_EVENT_LPARAM)
      return
    case 4
      obj% = bin_and(WParam%,MaskPanoramic%)
      ww%  = bin_and(LParam%,MaskHigh%)/65536
      hh%  = bin_and(LParam%,MaskLow%)
      width obj%,ww%
      height obj%,hh%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(width(10))+","+str$(height(10))
      return
  end_select
  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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 13:45

Bonjour Klaus,

Bon a priori cela fonctionne bien maintenant !  Wink

Si tu veux voir l'avancement de l'éditeur (en chantier !!! hihihi) tu peux le télécharger depuis ce lien.
Il suffit de dézipper le fichier. Le tout est dans un dossier.

Comme c'est une version de test, tu verra les GRIDs en bas de l'écran qui bien sûr n'existeront plus après. c'est pour le débogage.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


Nombre de messages : 2379
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 14:41

Bonjour à tous !

Sujets : Designer (Klaus) et Editeur d’objets (Minibug)

J’ai testé, c’est génial !

Belles prouesses !

Bravo Klaus et Minibug !  cheers
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 16:31

Merci à Minibug et Marc !

Si cela vous intéresse, je viens de poster ma moûture d'un GUI_Builder utilisant KGFTreeView, KGFGrid, 7Zip et Designer. Pour le mome,t, il gère BUTTON, EDIT, PICTURE_BUTTON et PANEL, mais il contient déjà tout ce qu'il faut pour construire d'autres "maquettes". Pour cela, cliquer sur "Défini", saisir * et valider, et on a la maquette "matrice" permettant de créer les autres maquettes (par "Enregistrer_sous...", puis modifier les valeurs des nouvelles maquettes, puis "Enregistrer").

Au passage, la maquette est présentée dans un KGFTreeView ayant des champs "protégés" (ni=on saisissables, non supprimables, non déplaçables) et d'autres libres d'accès. Les éléments simples peuvent être modifiés quant à leur nom, leur nature et leur valeur âr défaut, et peuvent être déplacés par Drag end Drop (nouvelle possiblité de KGFTreeView depuis la nouvelle version de KGF.dll de ce jour).
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 17:45

Bon ben si Klaus se lance dans la course pour la création d'un éditeur d'objet, je déclare forfait !

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

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 18:08

Non, Minnibug, certes pas !

J'ai juste voulu créer une "preuve de faisabilité" puisque tu m'as mis en doute sur la possibilité d'utiliser le Designer.
Je n'ai aucune intention de créer un outil complet, et de plus, ce ne serait nullement intégré à quoi que ce soit.

En fait, j'ai voulu faire une démo, mais vraiment qu'une démo, de Designer en collaboration avec les 3 autres objets annexes que sont KGFGrid, KGFTreeView et 7Zip.

Ta démarche garde tout son intérêt - mon code, qui n'ira pas plus loin d'ailleurs, est juste un libre-service de techniques et portions de code à porter ailleurs.
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 - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptySam 2 Avr 2022 - 18:16

Je rigole Klaus... Ne le prends surtout pas au pied de la lettre...

Si c'était le cas je n'aurai pas développé toutes ces versions d'éditeur qui sont (presque) aussi nombreuses que les versions de Panoramic !!!
lol! lol! lol!

Par contre oui je me servirai avec joie de ces nouvelles fonctions et ces nouvelle possibilités. sunny
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 7 Avr 2022 - 16:19

Bonjour Klaus !

J'ai quelques difficultés avec l'objet TAB. Je te rassure cela ne vient pas de KGF !
Simplement comme on ne peut pas déplacer ni agrandir cet objet, cela pose quelques soucis lors de sa sélection.

Est ce qu'il serai possible quand le désigner est activé, de bloquer le déplacement et le redimensionnement d'un objet TAB ?
Ou bien une fonction permettant cela, pour qu'on active ou désactive le déplacement et le redimensionnement et en fait avoir juste le cadre du désigner.

De plus lorsqu'un objet est sélectionné dans un TAB celui-ci ne s'affiche pas en avant plan comme avec les FORMs par exemple.
Mais ça je vais voir car je crois qu'il faut passer par un ACTIVE tab% ou quelque chose comme ça. il faut que je recherche...


Dernière édition par Minibug le Jeu 7 Avr 2022 - 17:37, édité 1 fois
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 EmptyJeu 7 Avr 2022 - 16:41

Ok. Je vais faire quelques essais - je n'ai pas encore essayé avec TAB.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty
MessageSujet: Re: KGF.dll - demandes ou suggestions de modifications ou ajouts   KGF.dll - demandes ou suggestions de modifications ou ajouts - Page 8 Empty

Revenir en haut Aller en bas
 
KGF.dll - demandes ou suggestions de modifications ou ajouts
Revenir en haut 
Page 8 sur 9Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant
 Sujets similaires
-
» KGF.dll - historique des modifications
» Demandes diverses
» quelques ajouts
» Liste des logiciels installés
» Ajouts de paramètres à SYNEDIT

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: