| Début d'un constructeur d'un GUI Panoramic | |
|
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Ven 15 Avr 2022 - 8:32 | |
| Je ne vois pas du tout ce qui peut clocher avec la ligne 1726: - Code:
-
if file_exists(file_delete olddir$+"\"+s1$)=1 then file_delete olddir$+"\"+s1$ A tout hasard, j'ai remis le source complet dans le WebDav. Mais c'est mystérieux. Quel est le message d'erreur ? Pourrais-tu insérer - Code:
-
message olddir$+"\"+s1$ juste avant la ligne 1726 et observer le résultat ? | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Ven 15 Avr 2022 - 8:57 | |
| if file_exists(file_delete olddir$+"\"+s1$)=1 then file_delete olddir$+"\"+s1$
Il n'y aurait pas un file_delete en trop ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Ven 15 Avr 2022 - 9:05 | |
| Ah, qu'est-ce qu'on peut être aveuglé, parfois... Oui, mais c'est bien sûr ! Merci, Silverman !
C'est corrigé sur le WebDav !
Désolé. cela n'aurait pas dû arriver. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Ven 15 Avr 2022 - 12:24 | |
| Nouvelle version de GUI_Builder dans le WebDav. Nouvelle version du projet test_suppression dans le WebDav.
J'ai ajouté les objetx OPEN_DIALOG, SAVE_DIALOG et IMAGE et je les ai ajoutés à ce projet (sauf IMAGE).
Donc: - télécharger ces deux modules - lancer le programme - sélectionner le projet test_suppression dans la combo de sélection des projets - cliquer sur Ouvrir projet - répondre Oui aux deux questions ==> le projet complet s'affiche, et les 3 nouvelles définitions d'objets sont installées.
Raison de la modification du source (en-dehors de la création des nouveaux objets): Après l'ajout de nouveaux objets, l'ordre des objets dans la combo de sélection de type d'objet (en haut à gauche) a changé car cette combo est triée. En conséquence, la table des derniers numéros d'objets par type d'objet est décalée et cela pose des problèmes lors de l'ajout de nouveaux objets.
Solution appliquée: on ignore maintenant la table des derniers numéros d'objets par type mémorisée dans le projet à charger, on réinitialise complètement les numéros Panoramic pour faire comme si on ajoutait les objets manuellement, un par un. Et, autimatiquement, la numérotation se passe bien. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Ven 15 Avr 2022 - 20:15 | |
| Bonsoir Klaus, Testé et approuvé ! Cette fois tout fonctionne parfaitement pour la suppression. Moi aussi j'ai du m'y reprendre à plusieurs reprise pour la gestion des TAB qui me posaient problème. Je vais surement mettre une nouvelle version dans le weekend mais avant je voudrai gérer l'association avec la propriété parent. Bonne soirée et bon weekend ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 0:34 | |
| YES !!!
Tu pourras regarder comment j'ai utilisé une procédure pseudo-réentrante pour trouver tous les objets dependants à travers plusieurs niveaux pour pouvoir les éliminer de la liste des objets du projet lors de la suppression d'un "contenant"... Je ne suis pas mécontent de ce petit bout de code (et je rends grâce à Papydall à qui revient le mérite d'avoir publié le principe). | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 9:15 | |
| Bonjour Klaus ! Oui j'ai vu beaucoup de choses dans ton code... Mon fonctionnement est un peu différent du tiens car je me base sur un tableau (Grid) qui me permet d'avoir toutes les infos des objets : Numéros, positions, parents, captions, événements... 1 ligne corresponds à un objet avec toutes ses propriétés et ses événements (On_click, On_change, etc). C'est d'ailleurs ce tableau que tu avais vu la fois ou tu avait testé mon code. Cela permet une sauvegarde très simple, rapide et hyper facile à mettre en œuvre. Et j'utilise un autre Grid qui me sert de Treeview fait maison a partir d'un simple List. C'est aussi un des tableau qui apparaissait en bas de l'écran pour le débogage. Comme cela je gère facilement les objets parent et enfant. Il m'est donc ensuite facile de supprimer les objets rattachés ensemble ou les déplacer dans le Treeview. Le principe est que chaque objet a un numéro unique. Par exemple 00001 pour le form de base et si on lui ajoute un bouton il se nomme 0002. Dans la gestion de mon Treeview le bouton sera reconnu sous 0000100002. Je recrée une sorte de "chemin" des objets. Donc ensuite si je souhaite supprimer le form et tout les objets rattachés le chercherai tous les objets commençants par 00001. Et cela fonctionne pour tous les niveaux et tous les objets. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 9:28 | |
| Oui, c'est intéressant comme principe ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 14:27 | |
| J'ai apporté diverses améliorations et corrections de petites anomalies.
J'ai ajouté MEMO et MEMO_RICH.
J'ai ajouté la possibilité de créer un projet de "Distribution des objets" (joint dans le WebDav). Ce projet ne contient que les définitions des objets et n'a pas d'objets concrets àassociés au projet. Il suffit d'ouvrir de projet et de répondre Oui aux deux questioins pour avoir toutes les définitions actuelles. Il n'est plus utile de répondre Oui aux deux questions des autres projets. Ces deux questions seront prochainement supprimées. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 15:13 | |
| j'ai testé quelques ajouts d'objets... Et pour finir j'ai ajouter un Form supplémentaire et quand j'ai voulu cliquer sur le 1er form j'ai eu un plantage en ligne 644 ! J'ai refait un test toujours avec la distribution des objets... - je réduit la taille du Form de base - j'ai ajouter un autre Form - mais impossible de remettre la sélection sur le 1er puisqu'il n'est pas dans la liste des objets ?! D'autre part le système d'association au parent n'est pas très intuitif. et la liste des objets ne permet pas de s'y retrouver facilement puisqu'elle n'est pas incrémentée. Mais je pense que tu y a déjà réfléchis... Je te laisse continuer dans ton projet et je retourne sur le mien. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 18:19 | |
| J'ai mis dans le WebDav un projet nommé test_deux_forms. Il a été établi acev GUI_Builder tel qu'il est, sans modification. Voici ce que ça donne: Pour essayer: - télécharger ce projet - lancer GUI_Builder - déplacer la fenêtre "terrain de jeu" portant le titre "Visualisation des objets" nettement vers le bas - sélectionner le projet "test_deux_forms" dans la combo de sélection des projets - cliquer sur le bouton "Ouvrir projet" - répondre "Non" aux deux questions - attendre l'arrivé du message "L'archive a été restaurée" Le résultat est la capture ci-dessus. Maintenant: - dans la liste des objets du projet, cliquer sur Form_1 ==> le Designer capture FORM_1 - cliquer sur le bouton "Objet actuel" dans le panel "Parent automatique" (en haut au milieu" ==> le nom de l'objet (FORM_1 dans ce cas) s'affche juste en-dessous avec son numéro d'objet Panoramic A partir de ce moment, tout objet ajouté au projet par le bouton "Ajouter" sera placé dans cette form. - ajouter des objes... - dans la liste des objets du projet, cliquer sur Form_2 ==> le Designer capture FORM_2 - cliquer sur le bouton "Objet actuel" dans le panel "Parent automatique" (en haut au milieu" ==> le nom de l'objet (FORM_2 dans ce cas) s'affche juste en-dessous avec son numéro d'objet Panoramic - ajouter des objets... - cliquer sur le bouton "Pas de parent" ==> le nom et numéro d'objet "parent automatique" s'efface et est remplacé par "<Aucun>" ==> à partir de ce moment, tout objet ajouté par le bouton "Ajouter" sera ajouté au terrain de jeu qui deviendra la form 0. Pour le voir, redéplacer le terrain de jeu vers le haut (il recouvrita les deux forms annexes) et visualiser les objets ajoutés dans la form principale. N'importe quel objet peut être sélectionné en cliquant sur son nom dans la liste à gauche. Si c'est un onjet dans une des forms annexes, alors déplacer le terrain de jeu vers le bas (ou à droite...) afin de faire apparaître les autres forms. Un clic dans cette liste des objets est le seul moyen de sélectionner un objet. Et même si je permettais de sélectionner par un clic sur un objet, cela ne marchera pas avec les objets invisibles. Mais je réfléchis à une soluton à ce problème, et j'ai une piste que je suis en train d'explorer. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Sam 16 Avr 2022 - 19:36 | |
| Ok Klaus,
Pour les objets invisibles j'ai opté pour un système de masque avec les numéro d'objets valide et tout un système de gestion ensuite qui permet de faire le lien. Pareil pour savoir quel objet accepte quel Parent. Pas exemple le Container_option qui n'accepte que les Options. Cela me permet d'avoir un Treeview avec des objets visibles et invisibles et de l'autre, l'affichage uniquement les 'vrais' objets.
En sachant que comme les objets invisibles ne sont reliés à aucun parent il apparaissent à la racine du Treeview au même niveau que les Form.
Cela me permet aussi en fonction de l'objet sélectionné dans le Treeview d'activer les objets ou non. Et pour les invisibles (façon Dlist, Open_dialogue, Timer, etc ils sont toujours actifs et se placent directement à la racine du Treeview. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 0:52 | |
| Oui, je comprends. Ce serait peut-être judicieux que je remplace la liste des objets du projet par un TreeView... je verrai cela.
Pour le moment, je poursuis une autre idée (pas contradictoire avec ce qui précède, d'ailleurs !): Pout tous les objets invisisbles, ainsi que pour des objets n'acceptant pas l'évènement ON_CLICK,je tente de les représenter visuellement par un PANEL dont la caption serait automatiquement son nom et dont les dimensions seraient fixes, non modifiables par le Designer. Ceci impliquera un ajout fonctionnel au Designer: une option interdisant le changement de dimensions et, tant que j'y suis, une autre interdidant les déplacements. Et dans ce contexte, je peux affecter un évènement 0N_CLICK à chaque objet et le sélectionner ainsi par un simple clic sur l'objet, puisqu'ils sont tous visibles dans GUI-Designer.
Ce fonctionnement est un peu calqué sur ce qui se passe dans le GUI de Delphi. Je n'ai pas inventé grand-chose... Il y aura bientôt une nouvelle version ! | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 1:08 | |
| - Citation :
- Ce fonctionnement est un peu calqué sur ce qui se passe dans le GUI de Delphi.
Oui effectivement c'est ce que j'allais te dire ! C'est une piste parmi tant d'autres.... c'est vrai que faire un éditeur de code n'est pas évident mais faire un éditeur d'objets est encore plus complexe !! Alors l'expérience de GPP même s'il n'était pas stable, ma permis de mieux comprendre le fonctionnement général. Et j'avoue que là j'arrive à mes fins sans trop de difficultés. Quoique le nouveau Designer m'a compliqué la tache... Le problème c'est tout les cas particuliers : Les objet Parents ou pas, Les invisibles, les propriétés qui ne sont pas toutes les mêmes... C'est à s'y perdre... Il faut avoir une bonne structure dans le programme pour ne pas s'égarer ! Pour le moment j'avance plutôt bien... Je bloque sur les cas particuliers comme les Tab ou les Form car je veux une sélection complète depuis les objets et depuis le Treeview. C'est complexe mais j'y suis presque ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 15:50 | |
| J'y suis, moi... J'ai apporté quatre modifications: - les deux questions lors d'un chargement de projet ne se posent plus, et on re recharge plus les définitions des objets, même si elles figurent dans le projet archivé - le projet "Distribution_des_objets" ne contient que les définitions des objets et est créé en enregistrement un projet dont le nom est vide (ou identique à "Distribution_des_objets") - tous les objets invisibles implémentées s'affichent sous la forme d'un panel avec unn libelle comprenant le nom de l'objet et son numéro Panoramic. On objet "invisible" peut être déplacé mais pas redimensiionné. - tous les objets peuvent être sélectionnés, soit par un clic sur leur nom dans la liste des objets, soit directement dans l'objet affiché. Le Designer se déplace en conséquence et les propriétés sont celles du noveau objet seléctionne. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 17:29 | |
| Bonjour Klaus ! - Klaus a écrit:
- J'y suis, moi... Smile Smile Smile
Ben non pas tout à fait ! J'ai tout téléchargé de nouveau et j'ai ouvert Distribution des objets. j'ai ensuite ajouté l'objet BUTTON et là, lorsque je clique sur BUTTON_1 il y a une erreur en ligne 476 ! Je m'y suis peut être mal pris. J'ai testé 2 fois... La seconde le programme a ouvert une fenêtre que je n'ai pas relevé. Elle concerne les propriétés de BUTTON_1 et après même plantage en 476 ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 17:50 | |
| Désolé. J'ai oublié de dire qu'il faut recharger KGF.dll car il y a un nouveau code action pour DesignerFunction et GUI_Builder l'utilise.
| |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 18:07 | |
| Heu même avec la dll de 17h32 j'ai toujours le même problème... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 20:08 | |
| La ligne 476 est celle qui crée le bouton dans le "terrain de jeu". Il n'y a rien de compliqué à cet endroit et, surtout, rien de changé depuis un bon moment...
Je sélectionne "BUTTON" dans le sélecteur des types, puis je clique sur "Ajouter" et le bouton apparaît dans le tgerrain de jeu, entouré de son Designer. Banal.
Je clique sur ce bouton, et le Designer disparaît, pour réapparaître aussitôt - normal, puisqu"un selectionne le même objet.
Charge le prohet "test_deix_forms", après avoir déplace le terrain de jeu pratiquement en bas de l'écran. Tu verras les deux forms apparaître, chacune avec quelques objets. Puis, tu peux cliquer sur n'importe quel objet,, soit visuels à l'écran, soit dans la liste des objets - la sélection réagira correctement.
Il y a peut-être un point à observer: le GUI de l'outil met quelques secondes à se compléter. Attends que tout soit bien stabilisé avant d'ajouter un objet, sinon il y a effectivement un problème avec le numéro d'objet lors de la création de l'objet.
EDIT le 17/04/2022 à 20:19:
J'ai remis le source (inchangé, néanmoins...) sur le WebDav, à tout hasard. On ne sait jamais... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Dim 17 Avr 2022 - 23:10 | |
| Bonsoir Klaus ! J'ai rechargé comme tu me l'as demandé mais rien ne change. Non non je confirme il y a un problème... - je choisis la Distribution des objets - ensuite le choisis ouvrir le projet. - Message L'archive est restaurée - En haut à gauche le choisi dans la liste : Button. - Je clique sur le bouton ajouter. - Et boom ! blocage du programme et quand je clique sur la croix du form j'ai l'erreur en ligne 476 qui apparait ! PS : Par contre le test deux forms fonctionne parfaitement ! Je n'ai pas retesté les autres exemples. Pour moi c'est le dernier exemple Distribution des objets qui pose problème ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Lun 18 Avr 2022 - 0:06 | |
| - Citation :
- Et boom ! blocage du programme et quand je clique sur la croix du form j'ai l'erreur en ligne 476 qui apparait !
Ben... j'ai fait exactement la procédure que tu décris, et chea moi, ça marche parfaitement... S'il te plaît, remplace la ligne 476 par - Code:
-
case 2: message "num%="+str$(num%) : button num% : parent num%,n_co_form% : ' "BUTTON" et dis-moi ce que le message affiche... ça devrait être - Citation :
- num%=1000
ou num%=50 | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Lun 18 Avr 2022 - 0:25 | |
| J'ai un message d'erreur : | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Lun 18 Avr 2022 - 0:44 | |
| Là au moins, c'est clair.
J'ai vérifie: ce fichier est bien présent dans GD_projet_Distribution_des_objets.zip.
Extrais ce fiichier, ou tout simplement tout l'archine, et ça marchera. De mon côté, je vérifierai la procédure de chargement du projet de distribution des objets. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Lun 18 Avr 2022 - 9:27 | |
| J'ai modifié la phase d'ouverture d'un projet.
Maintenant, il n'y a plus de questions supplémentaires qui sont posées.
Si le projet à ouvrir est le projet de distribution des objets, alors uniquement les définitions des objets et la liste des objets définis sont installés, qu'ils soient déjà existants dans le système ou non. Ceci permet de faire une mise à jour des définitions. Bien sûr, cela n'a aucune influence sur les projets déjà existants dont les objets unt leurs défintions avec leurs propriétés inhérentes au projet. L'effet des nouvelles versions des défintions des objets ne sefera sentir que lorsqu'un ajoute un tel objet à un projet après cette mise à jour.
Si un projet normal (non-distribution) est à ouvrir, seules les informations propres au projet sont restaurées, pas les définitions générales des objets, même si dans d'anciennes versions elles figurent encore dans l'archive. Les nouveaux projets enregistrés maintenant ne contiennent plus les définitions générales des objets. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic Lun 18 Avr 2022 - 10:46 | |
| Bonjour Klaus, Bon ce problème est résolu. Bravo ! Mais il va falloir que tu verrouilles certaines choses. Je m'explique : - J'ouvre la Distribution des objets -> ok ! - Message : L'archive est restaurée -> ok ! - Je sélectionne un Container_tab -> ok ! - Je clique sur Ajouter -> ok ! - Je clique sur Container_tab_1 -> ok ! - Je sélectionne un Tab -> ok ! - Je clique sur Ajouter -> ok ! - Je sélectionne Tab_1 -> Erreur en ligne 527 !
D'où l'idée d'un Treeview ou d'une liste ou l'objet sélectionné tient lieu de parent. Et comme ça tu 'libère" dans la liste des objets seulement ceux qui sont valide pour ce parent ! De mon coté j'ai résolu tous les problèmes ! Je travaille maintenant sur le changement d'association de parent depuis le Combo dans les propriétés Parent. En tenant compte de l'affichage des objets et du choix des objets Parent. Comme par exemple le Tab, seul un parent Container_tab peut lui être associé. Il faut donc que la liste de sélection des parents corresponde bien. Encore une fois ça rejoint ce que je disais plus haut... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Début d'un constructeur d'un GUI Panoramic | |
| |
|
| |
| Début d'un constructeur d'un GUI Panoramic | |
|