FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Jeu de dames
Aujourd'hui à 22:52 par papydall

» Une boîte à rythmes DRUMBOX
Aujourd'hui à 22:38 par papydall

» Version instantanée du 16 mai 2012: PANORAMIC V 0.9.23i6
Aujourd'hui à 21:52 par Klaus

» MÉTHODE du plus petit carré (régression linéaire)
Aujourd'hui à 21:01 par Severin

» libérer toutes les variables d'un programme sans le fermer
Aujourd'hui à 20:02 par Jean Claude

» boîtes de messages multi-langue
Aujourd'hui à 19:54 par Severin

» BAR und FORM keine Möglichkeit
Aujourd'hui à 19:38 par Severin

» Plugicielle pour Panoramic
Aujourd'hui à 18:39 par Klaus

» Exécution d'un script en Panoramic SANS compiler !
Hier à 13:00 par Klaus

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2012
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partager | 
 

 Nouveau pseudo-objet TAB utilisable par #INCLUDE

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2, 3, 4  Suivant
AuteurMessage
Klaus



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

MessageSujet: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Jeu 12 Aoû 2010 - 23:40

J'ai fait un pseudo-objet TAB permettant de créer une "page" avec des onglets. Plusieurs objets de ce type peuvent co-habiter, chaque objet peu recevoir jusqu'à 20 onglets, et on peut affecter des objets Panoramic à chaque onglet. Les onglets sont cliquables et affichent les objets Panoramic correspondants.

Ce module est réalisé entièrement en Panoramic, sur le modèle des GLIST, et est utilisable très simplement par #INCLUDE. Une documentation complète et un programme de démo sont joints à la distribution.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 8:04

Bravo Klaus !!! t'es le king

Voila une nouvelle fonctionnalité qui manquait vraiment !!
Super boulot !

Une petite précision pour ceux qui veulent s'y atteler : cela fonctionne uniquement sur la version 0.9.20i2 du 30 juillet.

Klaus, un petit détail...
Dans tab.bas à la ligne 159, le message d'erreur n'est pas correct... tu rêves des GLIST maintenant ? Smile

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 8:46

Merci, ça me va droit au coeur !

J'ai corrigé la référence à GLIST - un oubli après un copier-coller. Il est vrai que pendant un moment, je "pensais" GLIST...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 9:08

Nouvelle fonction pour les objets TAB: Tab_select permet de sélectioner par programme un onglet d'un objet TAB comme si l'on avait cliqué dessus. Cela manquait...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 9:16

Regarde si avec ce bout de code tu pourrais pas faire quelque chose :
Je pense que cela te simplifierai la vie...

Code:

label TAB_SearchParam
dim TAB_par$(10,1)


dim TAB_params$,TAB_i%,TAB_j%,TAB_error_mode%,TAB_err%
dim i,indice


TAB_params$ = "Create|N=20|H=200|W=400|T=40|L=90|O=5|"
TAB_error_mode%=1
gosub TAB_SearchParam

if TAB_err%=0
  print TAB_params$
  print "  fonction    :";TAB_par$(0,0)
  print "  nb paramètres:";TAB_par$(0,1)
  for i=1 to val(TAB_par$(0,1))
    print "  parametre n°:";i;"=";TAB_par$(i,0);" valeur:";val(TAB_par$(i,1))
  next i
end_if

end


TAB_SearchParam:
  for TAB_i%=0 to 10:TAB_par$(TAB_i%,0)="":TAB_par$(TAB_i%,1)="":next TAB_i%
  TAB_err%=0
  TAB_par$(0,1)="0"
  for TAB_i%=1 to len(TAB_params$)
    if mid$(TAB_params$,TAB_i%,1)="|"
      TAB_par$(0,1)=str$(val(TAB_par$(0,1))+1)
      TAB_j%=0
      if numeric(TAB_par$(val(TAB_par$(0,1))-1,1))=0
        TAB_params$ = "TAB: valeur non numerique pour paramètre"+chr$(10)+chr$(13)+chr$(34)+TAB_par$(val(TAB_par$(0,1))-1,0)+chr$(34)
        if TAB_error_mode%=1 then TAB_err% = message_error_OK(TAB_params$)
        return
      end_if
    else
      if mid$(TAB_params$,TAB_i%,1)="="
        TAB_j%=1
      else
        TAB_par$(val(TAB_par$(0,1)),TAB_j%)=TAB_par$(val(TAB_par$(0,1)),TAB_j%)+mid$(TAB_params$,TAB_i%,1)
      end_if
    end_if
  next TAB_i%
  if RIGHT$(TAB_params$,1)="|"
    TAB_par$(0,1)=str$(val(TAB_par$(0,1))-1)
  end_if

return




bon il manque quelques tests pour savoir si les valeurs sont numeriques... mais l'idée est là...

Edit : j'ai rajouté quelques tests...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 9:47

Jolie, cette analyse avec répartition caractère par caractère pour remplir le tableau. Je prends et vais réfléchir à son intégration.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 9:58

Je pense que cela servira par la suite et cela te simplifiera ta série de if imbriqué...

L'autre avantage, c'est que les paramètres peuvent être écrits dans n'importe quel ordre, du moment que derrière, l'analyse se fait avec une boucle for et un select/case.

Un truc que je viens de m'apercevoir au sujet du 'print'
Avant dans les anciens basics, quand on ecrivait ceci :

print "toto:";toto,"titi";titi

la virgule faisait l'équivalent d'une tabulation... apparemment ce n'est pas le cas dans panoramic...


Dernière édition par Nardo26 le Ven 13 Aoû 2010 - 10:24, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 10:20

Tu as raison. Je l'intégrerai dans TAB et GLIST et l'utiliserai pour d'autres projets. J'avais la tête plongée dans les fonctionnalités au point de ne pas trop me soucier des techniques de réalisation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 13:29

Dans la même optique:
Vu qu'on ne peut pas faire SELECT/CASE avec des variables de type texte,
on peut également faire de cette manière :
...Si ça peut donner des idées à quelques-un...

Klaus, jette un coup d'oeil sur la procedure TAB_IdentFct.
Je suis sûr qu'il y a bien quelqu'un dans ce forum qui peut optimiser ce truc... (avec un left$() et un instr()... par ex.) Wink

Code:

' --------------- variables déjà déclarées dans TAB.BAS
dim TAB_params$,TAB_i%,TAB_j%,TAB_error_mode%,TAB_err%,TAB_s$

' --------------- variables nécessaire pour TAB_SearchParam
label TAB_SearchParam
dim TAB_par$(10,1)


' --------------- variables nécessaire pour TAB_IdentFct
label TAB_IdentFct
dim TAB_LstFct$,TAB_IdentFct%
TAB_LstFct$="CREATE|MODE|TAB_LABEL|TAB_INSERT|TAB_DELETE|TAB_SELECT|OBJECT_ADD|OBJECT_REMOVE|" : ' tout en majuscule..doit obligatoirement se terminer par '|'





' --------------- variables utilisées pour la démo de TAB_SearchParam
dim i,indice


' TAB_params$ = "Create|N=20|H=200|W=400|T=40|L=90|O=51"
TAB_params$ = "Object_add|N=20|O=1|P=101"

TAB_error_mode%=1

gosub TAB_SearchParam
if TAB_err%=0
  gosub TAB_IdentFct
  if TAB_err%=0
    print TAB_params$
    print
    print "  fonction    :";TAB_par$(0,0);"  ";
    print "  nb paramètres:";TAB_par$(0,1)
    for i=1 to val(TAB_par$(0,1))
      print "  parametre n°";i;": ";TAB_par$(i,0);",  valeur:";val(TAB_par$(i,1))
    next i
    print
    print "-->";
    select TAB_IdentFct%
      case 1: print "gosub vers fonction create"
      case 2: print "gosub vers fonction Mode"
      case 3: print "gosub vers fonction Tab_label"
      case 4: print "gosub vers fonction Tab_insert"
      case 5: print "gosub vers fonction Tab_delete"
      case 6: print "gosub vers fonction Tab_Select"
      case 7: print "gosub vers fonction Object_add"
      case 8: print "gosub vers fonction Object_remove"
    end_select
  end_if

end_if

end

' *********************************************************************
' *                    FIN DU PROGRAMME DE TEST                      *
' *********************************************************************




TAB_SearchParam:
  for TAB_i%=0 to 10:TAB_par$(TAB_i%,0)="":TAB_par$(TAB_i%,1)="":next TAB_i%
  TAB_err%=0
  TAB_par$(0,1)="0"
  for TAB_i%=1 to len(TAB_params$)
    if mid$(TAB_params$,TAB_i%,1)="|"
      TAB_par$(0,1)=str$(val(TAB_par$(0,1))+1)
      TAB_j%=0
      if numeric(TAB_par$(val(TAB_par$(0,1))-1,1))=0
        TAB_params$ = "TAB: Appel fonction "+TAB_par$(0,0)+chr$(10)+chr$(13)
        TAB_params$ = TAB_params$+"valeur non numerique pour paramètre"+chr$(10)+chr$(13)+chr$(34)+TAB_par$(val(TAB_par$(0,1))-1,0)+chr$(34)
        TAB_err%=1
        if TAB_error_mode%=1 then TAB_err% = message_error_OK(TAB_params$)
        return
      end_if
    else
      if mid$(TAB_params$,TAB_i%,1)="="
        TAB_j%=1
      else
        TAB_par$(val(TAB_par$(0,1)),TAB_j%)=TAB_par$(val(TAB_par$(0,1)),TAB_j%)+mid$(TAB_params$,TAB_i%,1)
      end_if
    end_if
  next TAB_i%
  if RIGHT$(TAB_params$,1)="|"
    TAB_par$(0,1)=str$(val(TAB_par$(0,1))-1)
  end_if

return


TAB_IdentFct:
  TAB_s$="": TAB_IdentFct%=0: TAB_j%=1: TAB_err%=0
  for TAB_i%=1 to LEN(TAB_LstFct$)
    if mid$(TAB_LstFct$,TAB_i%,1)="|"
      if  TAB_s$=UPPER$(TAB_par$(0,0))
        TAB_IdentFct%=TAB_j%
        return
      else
        TAB_s$=""
        TAB_j%=TAB_j%+1
      end_if
    else
      TAB_s$=TAB_s$+mid$(TAB_LstFct$,TAB_i%,1)
    end_if
  next TAB_i%
  TAB_params$="TAB: fonction "+TAB_par$(0,0)+" inconnue !"
  if TAB_error_mode%=1 then TAB_err% = message_error_OK(TAB_params$)
  TAB_err%=1
return






Dernière édition par Nardo26 le Ven 13 Aoû 2010 - 14:10, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 14:07

Je regarderai cette fonction.

En attendant, une petite correction dans TAB-SearchParam: la variable TAB_j est utilisée mais pas mis à zéro au début, ce qui plante au deuxième appel car cette variable est utilisée dans TAB.bas:
Code:
TAB_SearchParam:
  for TAB_i%=0 to 10:TAB_par$(TAB_i%,0)="":TAB_par$(TAB_i%,1)="":next TAB_i%
  TAB_par$(0,1)="0" : TAB_j% = 0
  for TAB_i%=1 to len(TAB_params$)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 14:22

Oui en effet, tu as raison...
me suis fait avoir sur ce coup... Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 14:26

Qu'est-ce que tu penses de cela:
Code:
label TAB_IdentFct
dim TAB_LstFct$, TAB_params$, TAB_i%,TAB_n%

TAB_LstFct$="CREATE|.......MODE|.........TAB_LABEL|....TAB_INSERT|...TAB_DELETE|...TAB_SELECT|...OBJECT_ADD|...OBJECT_REMOVE|

TAB_params$ = "Object_add|N=t20|O=1|P=101"
gosub TAB_IdentFct
message TAB_params$ + "==>" + str$(TAB_n%)

TAB_params$ = "Object_remove|N=20|O=3|P=17"
gosub TAB_IdentFct
message TAB_params$ + "==>" + str$(TAB_n%)

end

TAB_IdentFct:
' pour le programme réel TAB_par$(0,0) étant chargé:
' TAB_n% = int((instr(TAB_LstFct$,upper$(TAB_par$(0,0)))+13)/14 )
' deux lignes pour la démo:
TAB_i% = instr(TAB_params$,"|")
TAB_n% = int((instr(TAB_LstFct$,upper$(left$(TAB_params$,TAB_i%)))+13)/14 )
return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 14:46

Yessss !
Simple(?) et efficace !
Voila un code comme je les aime ! (on se prend la tête entre les mains un petit moment) Wink
Me doutais bien qu'il y avait un moyen de simplifier la chose...
Wink

Tiens ca ma permis de voir qu'il n'y avait pas de quote en fin d'init de TAB_LstFct$ et que cela n'a pas du tout dérangé panoramic....
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus



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

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 15:07

J'ai rajouté le guillemet - bizarre !

Je suis en train d'adapter TAB pour utiliser tout cela; j'ai fat une petite routine pour récupérer la valeur d'un paramètre:
Code:


TAB_param_value:
    for TAB_p%=1 to val(TAB_par$(0,1))
        if TAB_par$(TAB_p%,0)=TAB_p$
            TAB_p% = val(TAB_par$(TAB_p%,1))
            return
        end_if
    next TAB_p%
    TAB_p% = -1
    return
   


appelé comme suit:

Code:

TAB_p$ = "H"
gosub TAB_param_value
if TAB_p%>-1
' ici, traitement spécifique
end_if


Ca marche très bien !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klaus.panoramic.voila.net/index.html
Nardo26



Nombre de messages: 1344
Age: 43
Localisation: Valence
Date d'inscription: 02/07/2010

MessageSujet: Re: Nouveau pseudo-objet TAB utilisable par #INCLUDE   Ven 13 Aoû 2010 - 16:03

Au fait c'est un peu bourrin la methode 2 lignes... Smile
car si tu dois rajouter des fonctions, faut tout recalculer....

Code:

label TAB_IdentFct,TAB_IdentFct2,Toto
dim TAB_LstFct$, TAB_params$, TAB_i%,TAB_n%,a$

a$="ceci est une chaine qui pose pas de problème
TAB_LstFct$="CREATE|............MODE|..............TAB_LABEL|.........TAB_INSERT|........TAB_DELETE|........OBJECT_UN_PEU_LONG|"

TAB_params$ = "CREATE|N=t20|O=1|P=101"
gosub TAB_IdentFct2
message TAB_params$ + "==>" + str$(TAB_n%)

TAB_params$ = "MODE|N=t20|O=1|P=101"
gosub TAB_IdentFct2
message TAB_params$ + "==>" + str$(TAB_n%)

TAB_params$ = "OBJECT_UN_PEU_LONG|N=t20|O=1|P=101"
gosub TAB_IdentFct2
message TAB_params$ + "==>" + str$(TAB_n%)
end

TAB_IdentFct2:
TAB_i% = instr(TAB_params$,"|")
TAB_n% = int((instr(TAB_LstFct$,upper$(left$(TAB_params$,TAB_i%)))+18)/19)
return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
 

Nouveau pseudo-objet TAB utilisable par #INCLUDE

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 4Aller à la page : 1, 2, 3, 4  Suivant

 Sujets similaires

-
» objet on se lance
» Fair tourner un objet
» vos pseudo msn
» Pseudo
» CONC0OURS :: le pseudo le plus original

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-