Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Liste des objets d'un programme | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Liste des objets d'un programme Dim 17 Juil 2011 - 20:04 | |
| Un premier jet, suite à la nouvelle version Panoramic de ce jour: la liste des objets d'un programme, avec leur numéro. Bien utile en cours de mise au point, ou pour intervenir dans un programme plus ancien. à insérer dans le programme juste avant le END: - Code:
-
LABEL List_Obj: GOSUB List_Obj Le sous-programme à mettre tout à la fin du programme: - Code:
-
List_Obj: DATA "SCENE3D","BUTTON","EDIT","MEMO","COMBO","ALPHA","FORM","LIST","PICTURE" DATA "CHECK","OPTION","MAIN_MENU","SUB_MENU","SOUND","MOVIE","TRACK_BAR" DATA "OPEN_DIALOG","SAVE_DIALOG","SCROLL_BAR","PROGRESS_BAR","SPIN","GRID" DATA "CONTAINER","","","DLIST","SCENE2D","TIMER","","","","CONTAINER_OPTION" DATA "","","","","","","","","IMAGE", "F" DIM tobj$(50), ntob, into, tonto, lobj$: ntob = 0 READ a$: WHILE a$ <> "F": ntob = ntob + 1: tobj$(ntob) = a$: READ a$: END_WHILE lobj$ = "Liste des objets:" + CHR$(10) FOR into = 1 TO 100 tonto = OBJECT_TYPE(into) IF tonto > 0 THEN lobj$ = lobj$ + STR$(into)+": "+tobj$(tonto) + CHR$(10) NEXT into MESSAGE lobj$ RETURN Dès le lancement du programme, la liste des objets avec leurs numéros s'affiche dans un 'Message'. Quand on n'en a plus besoin, il suffit de supprimer (ou mettre en commentaire) l'appel avant le END. (et éventuellement de supprimer le sous-programme correspondant). Il n'y a pas d'autre intervention (DIM ou LABEL) à faire dans le programme testé, le sous-programme n'est appelé qu'une fois. PS la limitation à 100 est arbitraire (FOR into = 1 TO 100), il peut être nécessaire d'augmenter cette valeur. | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Dim 17 Juil 2011 - 23:00 | |
| Bravo, tu n'as pas perdu de temps. Rajoutes dans les déclarations ceci: - Code:
-
if variable("a$")=0 then dim a$ |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Dim 17 Juil 2011 - 23:06 | |
| Bien vu cosmos ! elle m'avait échappé celle-là ! mais je remplacerai plutôt les deux lignes par: - Code:
-
... DIM obja$, tobj$(50), ntob, into, tonto, lobj$: ntob = 0 READ obja$: WHILE obja$ <> "F": ntob = ntob + 1: tobj$(ntob) = obja$: READ obja$: END_WHILE ...
pour rester dans ma logique, sinon ta solution est très valable. En plus je n'avais pas percuté sur la fonction VARIABLE(), bien utile, merci à toi. Et bonne nuit ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Lun 26 Sep 2011 - 21:17 | |
| Une autre version, très semblable mais plus souple (plus lisible s'il y a plus d'une centaine d'objets), qui donne la liste des objets utilisés avec leur numéro, et la liste des numéros 'libres'. Utile pour insérer de nouveaux objets dans un programme existant dont la numérotation des objets s'est faite un peu au hasard, comme ça m'arrive parfois (bon, souvent...), un petit programme qui grossit au fur et à mesure des idées qui viennent... Je suis parti du principe que le dernier numéro d'objet défini dans le programme cible était inférieur à 1000 (nobt = 1000), ce serait éventuellement à ajuster sinon. A insérer juste avant le END du programme. Au stop, cliquer 'No', puis 'OK' pour exploiter le résultat. Et à supprimer après usage. - Code:
-
' ****** Liste des objets Panoramic du programme et leur numéro d'objet ******* DIM aol$, nol, nobt, objl$(100) DATA "1","SCENE3D","2","BUTTON","3","EDIT","4","MEMO","5","COMBO","6","ALPHA" DATA "7","FORM","8","LIST","9","PICTURE","10","CHECK","11","OPTION" DATA "12","MAIN_MENU","13","SUB_MENU","14","SOUND","15","MOVIE","16","TRACK_BAR" DATA "17","OPEN_DIALOG","18","SAVE_DIALOG","19","SCROLL_BAR","20","PROGRESS_BAR" DATA "21","SPIN","22","GRID","23","CONTAINER","26","DLIST","27","SCENE2D" DATA "28","TIMER","32","CONTAINER_OPTION","41","IMAGE" DATA "f" READ aol$: WHILE aol$ <> "f": nol = VAL(aol$): READ objl$(nol): READ aol$: END_WHILE nobt = 1000: ' à ajuster éventuellement FORM nobt: HEIGHT nobt, nobt: BORDER_SMALL nobt LIST nobt+1: PARENT nobt+1,nobt: TOP nobt+1,16: WIDTH nobt+1,190: HEIGHT nobt+1,950 LIST nobt+2: PARENT nobt+2,nobt: TOP nobt+2,16: LEFT nobt+2,190: WIDTH nobt+2,80: HEIGHT nobt+2,950 ALPHA nobt+3: PARENT nobt+3, nobt CAPTION nobt+3,"OBJETS DEFINIS: Nos LIBRES:" FOR nol = 1 TO nobt-1 IF OBJECT_EXISTS(nol) = 1 aol$ = objl$(OBJECT_TYPE(nol)) IF aol$ <> "" THEN ITEM_ADD nobt+1, STR$(nol) + ": " + aol$ ELSE ITEM_ADD nobt+2, STR$(nol) END_IF NEXT nol STOP ' ***************************************************************************** J'ai essayé par curiosité de mettre HIDE nobt juste après le STOP, pour pouvoir continuer le programme normalement en rendant la liste invisible, mais ça ne cache rien du tout, je ne vois pas pourquoi. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Liste des objets d'un programme Lun 26 Sep 2011 - 22:56 | |
| | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Lun 26 Sep 2011 - 23:26 | |
| Bonsoir, Je suis en train de faire un programme pour faire du courrier de retraité comme moi, et j'ai rajouté le tien avant le end pour faire l'essai. (comme tu vois, je mets parfois du temps pour tester un programme)
C'est pas mal pensé. A ce propos, est-ce çà vous intéresse ce que je fais. Avec tout ce qu'on trouve pour faire du texte, cela peut sembler ringard. Le but pour moi qui tape une lettre tout les 36 du mois (il faut chercher longtemps) est de pouvoir faire une lettre sans avoir à rechercher les commandes. Un clic dans une liste pour une formule de politesse, un autre pour faire le choix du type d'interlocuteur, etc... A voir. Ton programme c'est tout nouveau: 26 septembre! excuses. Finalement je suis rapide sur ce coup là! |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Lun 26 Sep 2011 - 23:48 | |
| Merci pour les réactions. Cosmos, ce que tu fais peut être intéressant effectivement, c'est à voir. Mais c'est bien vrai qu'on n'écrit plus beaucoup de lettres de nos jours, avec les téléphones en tous genres et les emails (je ne parle même pas des sms qui sont une abomination pour l'orthographe des jeunes et parfois moins jeunes) ! alors les bonnes formules se perdent. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Liste des objets d'un programme Mar 27 Sep 2011 - 7:23 | |
| Oui Cosmos, que ce soit pour une lettre ou un document, ça peut être intéressant. | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Mar 27 Sep 2011 - 8:56 | |
| Bon! dans ce cas il faut que je fasse le fichier HTML. Comme la sortie pour imprimer est en HTML, il faut que je donne les indications pour pouvoir modifier quelques paramètres qui ne vous conviendraient pas. De plus, Par simplification, j'ai rempli des mémos par des item_add directement dans le programme. Il faut que je remplace par des fichiers pour le forum. Qu'il n'y est pas à toucher au programme. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Liste des objets d'un programme Mar 27 Sep 2011 - 11:44 | |
| Exellent En plus il n'y a pas trop de sources sur ce type de sujet selon mes souvenirs (je ne prétends pas me rappeler de tous les exemples, mais bon ...) | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Mar 27 Sep 2011 - 14:11 | |
| Oui. Il n'y a pas de sujet de ce type, car Panoramic n'a pas de commande de printer. De plus, si on veut afficher quelque chose en couleur, le seul objet qui le permette est un picture. Difficilement gérable! Je l'ai déjà fait, mais un bug sur une fonction d'alors m'avait arrété, et vu la complexité ensuite du programme où quels mois plus tard, je me mélangeais les pinceaux, j'ai arrêté. Pourtant je pouvais à n'importe quel endroit d'un picture, retrouver la ligne, et changer de couleur, ou autre. Pas évident. Pour ce programme, je l'ai vu modeste. J'ai quand-même mis la possibilité de mettre quelle couleur, me rappelant qu'une machine à écrire avait un ruban rouge et noir. J'ai simplement dans un memo mis un code de ce type: ¤0 à ¤9. Exemple: - Citation :
- ceci montre un texte écrit en rouge sur fond jaune¤2¤5TEXTE EN ROUGE SUR FOND JAUNE¤0¤0. écriture normal.
( ¤2:encre rouge, ¤5: fond jaune, ¤0: annulation du code couleur ). Je me suis pas cassé la tête, le programme était pour ma pomme comme on dit, et c’est pas vraiment gênant. Il y a de toute façon 2 list pour l'encre et le fond pour le faire. Il n'était pas prévu de mettre de la couleur au départ, mais je me connais. Il faut toujours que j'en rajoute! Oh! excuses-moi JL, j’arrête de parler de ce programme sur ton post. Promis |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Mar 27 Sep 2011 - 16:38 | |
| Mais non cosmos, d'abord je ne suis pas susceptible à ce point, et puis mon post était un peu un gadget, et ta méthode est sera intéressante à étudier, ça peut toujours servir. Et comme toi je regrette qu'il n'y ait pas de commande d'impression. Certes, on peut toujours appeler un programme externe, mais il faut formater en conséquence, ou bien appeler l'excellente dll de Klaus (quelles nouvelles ?), mais ce n'est pas du pur Panoramic. | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Lun 7 Nov 2011 - 15:06 | |
| Ton programme JL35 ne fonctionne plus. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Lun 7 Nov 2011 - 17:02 | |
| Aïe ! c'est la nouvelle version ? il faut que je voie ça...
Bizarre ce que tu dis... à première vue ça semble toujours marcher chez moi, même avec la nouvelle version... | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Lun 7 Nov 2011 - 17:48 | |
| Bonjour, J'ai fait des essais avec différents programmes, et même relancer le dernier Editeur, Si il y a un trou dans la numérotation, ça bloque à ce niveau là. En tout cas, je ne peux pas lire le message. C'est quant même pas possible que je sois le seul à avoir ce problème. J'ai mis hier le problème concernant object_exists, mais c'est avec ton programme qui était inclus mais mis en commentaire que j'ai vu ceci. Afin de pouvoir mettre le programme ensuite en include, j'avais tout renommer pour que la numérotation puisse être transmise facilement. Pour l'instant j'ai repris l'ancienne version, mais je me demande si je ne dois pas faire une liste, et tenir à jour selon que les objets soient créés ou détruits, vu que ce sont des balises pour les enrichissements de texte. Si je suis le seul à avoir ce problème, cela m'étonnerais que Jack se penche sur ce problème. Bizarre quand même! Il faut que je me penche sur les modifs |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Lun 7 Nov 2011 - 18:42 | |
| J'ai essayé rapidement avec quelques sources simples, et ça me donne le résultat attendu, mais ça n'empêche pas qu'il peut y avoir des cas particuliers... c'est à voir de plus près. | |
| | | Invité Invité
| Sujet: Re: Liste des objets d'un programme Lun 7 Nov 2011 - 19:15 | |
| Je suis un peu surpris. Je me dis que ayant pris le chargement depuis le forum anglais, je vais refaire de nouveau l'essai depuis les site français. Et rebelote, j'ai encore le même message d'erreur que j'ai posté. Je ne peux pas télécharger cette version. J'ai réessayé depuis le site anglais, et ça marche.
C'est pas du SEXE, mais les problèmes de BITes informatiques commencent par m'épuiser !
Vu que je me retrouve seul, je suis encore bon à revoir mes codes pour m'adapter et exclure ces deux instructions: objects_exists, et object_type. Cette dernière ne m'est pas indispensable.
Je vais encore passer du temps à revoir cela. Merci d'avoir regardé. Salutation! |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Liste des objets d'un programme Jeu 10 Nov 2011 - 18:40 | |
| Une version un peu modifiée: - Code:
-
' **************** objets Panoramic et leur numéro de type ********************* ' *** include le code ci-dessous juste avant le END, puis lancer l'exécution *** DIM aol$, nol%, nobt%, objl$(100), n1ob%, n2ob%, nrob%, job%, iob% DATA "1","SCENE3D","2","BUTTON","3","EDIT","4","MEMO","5","COMBO","6","ALPHA" DATA "7","FORM","8","LIST","9","PICTURE","10","CHECK","11","OPTION" DATA "12","MAIN_MENU","13","SUB_MENU","14","SOUND","15","MOVIE","16","TRACK_BAR" DATA "17","OPEN_DIALOG","18","SAVE_DIALOG","19","SCROLL_BAR","20","PROGRESS_BAR" DATA "21","SPIN","22","GRID","23","CONTAINER","26","DLIST","27","SCENE2D" DATA "28","TIMER","32","CONTAINER_OPTION","41","IMAGE" DATA "f" READ aol$: WHILE aol$ <> "f": nol% = VAL(aol$): READ objl$(nol%): READ aol$: END_WHILE nobt% = 1000: ' *** à ajuster (doit être > que le dernier objet du module) *** FORM nobt%: HEIGHT nobt%, 900: BORDER_SMALL nobt% LIST nobt%+1: PARENT nobt%+1,nobt%: TOP nobt%+1,16: WIDTH nobt%+1,160: HEIGHT nobt%+1,850 LIST nobt%+2: PARENT nobt%+2,nobt%: TOP nobt%+2,16: LEFT nobt%+2,-200: WIDTH nobt%+2,100: HEIGHT nobt%+2,850 LIST nobt%+4: PARENT nobt%+4,nobt%: TOP nobt%+4,16: LEFT nobt%+4,170: WIDTH nobt%+4,100: HEIGHT nobt%+4,850 ALPHA nobt%+3: PARENT nobt%+3, nobt% CAPTION nobt%+3,"OBJETS DEFINIS: Nos LIBRES:" FOR nol% = 1 TO nobt%-1 IF OBJECT_EXISTS(nol%) = 1 aol$ = objl$(OBJECT_TYPE(nol%)) IF aol$ <> "" THEN ITEM_ADD nobt%+1, STR$(nol%) + " " + aol$ ELSE ITEM_ADD nobt%+2, STR$(nol%) END_IF NEXT nol% FOR job% = 1 TO COUNT(nobt%+2)-1 n1ob% = VAL(ITEM_READ$(nobt%+2,job%)): nrob% = n1ob% FOR iob% = job% TO COUNT(nobt%+2) n2ob% = VAL(ITEM_READ$(nobt%+2,iob%)) IF n2ob% > (nrob%+1) THEN EXIT_FOR nrob% = n2ob% NEXT iob% IF nrob% > n1ob% ITEM_ADD nobt%+4, STR$(n1ob%)+" -> "+STR$(nrob%) ELSE ITEM_ADD nobt%+4, STR$(n1ob%) END_IF job% = iob%-1 NEXT job% MESSAGE "Terminé !": TERMINATE ' ******************************************************************************
Enregistrer ce code dans les sources, par exemple sous 'Listobj.bas'. Ensuite, dans le module à tester, il suffit d'insérer - Code:
-
#INCLUDE "Listobj.bas" juste avant le END, ou mieux juste après le dernier objet déclaré (il peut y avoir du code exécuté entre les deux), puis de lancer le module. (et ne pas oublier d'enlever le Include avant réécriture éventuelle...). La principale modif c'est de ne plus donner bêtement la liste des numéros libres, mais les plages de numéros libres, ce qui est beaucoup plus concis. | |
| | | Contenu sponsorisé
| Sujet: Re: Liste des objets d'un programme | |
| |
| | | | Liste des objets d'un programme | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |