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
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 0:29

» track_bar circulaire
par Klaus Hier à 21:41

» Gestionnaire de Projets Panoramic
par Jean Claude Hier à 20:41

» Mah-Jong européen new-look
par Jean Claude Hier à 20:34

» Gestion de l'Unicode
par jean_debord Hier à 11:21

» Button_picture
par pascal10000 Jeu 14 Déc 2017 - 11:41

» Pourquoi le compilateur stagne
par Minibug Jeu 14 Déc 2017 - 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Jeu 14 Déc 2017 - 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Jeu 14 Déc 2017 - 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Jeu 14 Déc 2017 - 10:00

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Une histoire de fou ou j'ai besoin de vacances (résolu)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 15 Sep 2015 - 13:27

@ Klaus,

Ayez pitié, banissez la formule "if...then..."
et remplacez là par par " if...end_if"

un début, une fin

avec then, il y a souci 1 coup sur 4
le return avant le end_if permet de sortir sans tester les if suivant celui qui est à prendre en compte
et on gagne en rapidité.

@ Jean Claude,

Il y a surement un souci.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 13:43

@Ygeronimi:
Pourquoi me dis-tu
Citation :
Ayez pitié, banissez la formule "if...then..."
et remplacez là par par " if...end_if"
Je n'ai fait que reprendre le code de Jean-Claude, tel qu'il est...
Personnellement, j'aurais fait un select...case...end_select. Mais ça a déjà été dit.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 15 Sep 2015 - 13:59

Je le dis parce que je la vois dans le code, tu n' y es pour rien... Laughing

Chaque fois que j' ai voulu faire court en utilsant "then" j' ai eu des soucis.
Maintenant, elle est bannie chez moi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5088
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 14:16

@Ygeronimi, tu aurais bien mis le doigt dessus.

J'ai remplacé les if/then par if/end_if dans le sous-programme clics.
Et là, ça marche normalement (l'exe aussi).

Code:
' Calculette_Basique par JC 08/2015
hide 0
application_title "CALCULETTE (Basique)"
' message string$(51," ")+"INFORMATION"+chr$(13)+"Cette calculette est destinée aux enfants. Elle ne fait qu'un calcul à la fois."
Retourne_Dimension_Bandeau_Et_Bord()
Dim_Label()
Objets()
show 0
reinit()
END
rem ============================================================================
clics:
   if number_click=bt_CE%
      reinit()
   end_if
   if number_click=bt_divise%
      divise()
   end_if
   if number_click=bt_multipli%
      multipli()
   end_if
   if number_click=bt_moins%
      moins()
   end_if
   if number_click=bt_virg%
      virg()
   end_if
   if number_click=bt_PC%
      PC()
   end_if
   if number_click=bt_plus%
      plus()
   end_if
   if number_click=bt_egal%
      egal()
   end_if
   if number_click=bt_0%
      bt("0")
   end_if
   if number_click=bt_1%
      bt("1")
   end_if
   if number_click=bt_2%
      bt("2")
   end_if
   if number_click=bt_3%
      bt("3")
   end_if
   if number_click=bt_4%
      bt("4")
   end_if
   if number_click=bt_5%
      bt("5")
   end_if
   if number_click=bt_6%
      bt("6")
   end_if
   if number_click=bt_7%
      bt("7")
   end_if
   if number_click=bt_8%
      bt("8")
   end_if
   if number_click=bt_9%
      bt("9")
   end_if
RETURN
rem ============================================================================
SUB reinit()
    tour%=0 : nb=0 : nbP=0 : nombre$="" : lig$="" : op$="" : mode$="" : inactive bt_PC%
    clear afi_op% : clear afi_result% : inactive bt_egal% : inactive_boutons() : active bt_virg%
    Ctrl_bouton() : set_focus 0
END_SUB

SUB Ctrl_bouton()
    if active(bt_egal%)=0 then file_load bt_egal%,"egal_nb.bmp"
    if active(bt_egal%)=1 then file_load bt_egal%,"egal.bmp"
    if active(bt_virg%)=0 then file_load bt_virg%,"virgule_nb.bmp"
    if active(bt_virg%)=1 then file_load bt_virg%,"virgule.bmp"
    if active(bt_PC%)=0 then file_load bt_PC%,"Pourcentage_nb.bmp"
    if active(bt_PC%)=1 then file_load bt_PC%,"Pourcentage.bmp"
    if active(bt_plus%)=0 then file_load bt_plus%,"plus_nb.bmp"
    if active(bt_plus%)=1 then file_load bt_plus%,"plus.bmp"
    if active(bt_moins%)=0 then file_load bt_moins%,"moins_nb.bmp"
    if active(bt_moins%)=1 then file_load bt_moins%,"moins.bmp"
    if active(bt_multipli%)=0 then file_load bt_multipli%,"multiplication_nb.bmp"
    if active(bt_multipli%)=1 then file_load bt_multipli%,"multiplication.bmp"
    if active(bt_divise%)=0 then file_load bt_divise%,"division_nb.bmp"
    if active(bt_divise%)=1 then file_load bt_divise%,"division.bmp"
END_SUB

' les 4 opérations
SUB divise()
    tour%=0 : active bt_virg%
    inactive_boutons() : op$="/" : clear afi_result% : lig$=lig$+" : " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
SUB multipli()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="*" : clear afi_result% : lig$=lig$+" x " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
SUB plus()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="+" : clear afi_result% : lig$=lig$+" + " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
SUB moins()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="-" : clear afi_result% : lig$=lig$+" - " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
' résultat
SUB egal()
  if numeric(nombre$)=1
     nb=val(nombre$)
  else
     if right$(nombre$,1)="%" and op$="*"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%*"
     end_if
     if right$(nombre$,1)="%" and op$="+"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%+"
     end_if
     if right$(nombre$,1)="%" and op$="-"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%-"
     end_if
  end_if
  inactive bt_egal% : tour%=0 : active bt_virg%
  if op$="%*" then nbP=(nbP*nb)/100
  if op$="%+" then nbP=nbP+((nbP*nb)/100)
  if op$="%-" then nbP=nbP-((nbP*nb)/100)
  if op$="+" then nbP=nbP+nb
  if op$="-" then nbP=nbP-nb
  if op$="*" then nbP=nbP*nb
  if op$="/"
     if nb<>0
        nbP=nbP/nb
     else
        message "La division par zéro n'existe pas" : reinit() : EXIT_SUB
     end_if
  end_if
  clear afi_result% : lig$=lig$+" = "+str$(nbP) : affiche_lig()
  nb=0 : nombre$="" : mode$="F" : clear afi_result% : item_add afi_result%,str$(nbP)
  Ctrl_bouton()
END_SUB
' la touche %
SUB PC()
    inactive bt_PC%
    Ctrl_Mode() : nombre$=nombre$+"%" : affiche() : lig$=lig$+"%" : affiche_lig()
    Ctrl_bouton()
END_SUB
' la virgule
SUB virg()
    inactive bt_virg% : Ctrl_bouton()
    if tour%=0 or mode$="F" then nombre$="0" : lig$=lig$+"0"
    nombre$=nombre$+"." : affiche() : lig$=lig$+"," : affiche_lig()
    if mode$="F"  then inactive bt_egal% :  mode$="" : lig$="0," : nbP=0 : affiche_lig()
END_SUB
' les chiffres
SUB bt(n$)
    Ctrl_Mode() : nombre$=nombre$+n$ : lig$=lig$+n$ : n$="" : affiche() : affiche_lig()
END_SUB
SUB Ctrl_Mode()
    Ctrl_bouton()
    if mode$="F" then inactive bt_egal% : mode$="" : lig$="" : nbP=0 : affiche_lig()
    if mode$="C" then active bt_egal% : inactive_boutons()
    if mode$="" then active_boutons()
    tour%=tour%+1
END_SUB
' l'affichage
SUB affiche()
    if len(nombre$)>14 then message "   14 chiffres maximum !   " : reinit() : Exit_Sub
    clear afi_result% : item_add afi_result%,nombre$
END_SUB
SUB affiche_lig()
    clear afi_op%
    if len(lig$)>26 then Exit_Sub
    item_add afi_op%,lig$
END_SUB
' contrôle des boutons
SUB inactive_boutons()
    inactive bt_divise% : inactive bt_multipli% : inactive bt_moins% : inactive bt_plus%
    Ctrl_bouton()
END_SUB
SUB active_boutons()
    active bt_divise% : active bt_multipli% : active bt_moins% : active bt_plus%
    Ctrl_bouton()
END_SUB
rem ============================================================================
SUB Dim_Label()
    dim no%,tour%
    dim nb,nbP
    dim virgul$,nombre$,lig$,op$,mode$
    virgul$="."
    dim afi_result%,afi_op%
    dim bt_CE%,bt_divise%,bt_multipli%,bt_moins%,bt_virg%,bt_PC%,bt_plus%,bt_egal%
    dim bt_0%,bt_1%,bt_2%,bt_3%,bt_4%,bt_5%,bt_6%,bt_7%,bt_8%,bt_9%
    label fin,clics
END_SUB
' ------------------------------------------------------------------------------
SUB Objets()
    ' Form 0
    border_small 0 : caption 0,"CALCULETTE (Basique)" : width 0,400
    height 0,302 : width 0,187 : top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2)
    color 0,150,240,255
    ' Afficheurs
    no%=no%+1 : afi_op%=no% : list no% : parent no%,0 :' font_bold no%
                width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,20 : top no%,5
    no%=no%+1 : afi_result%=no% : list no% : parent no%,0 : color no%, 255,255,0
                font_color no%,0,100,255
                font_bold no% : font_size no%,14
                width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,30 : top no%,top(afi_op%)+height(afi_op%)+2
    ' les boutons
    ' la première rangée
    no%=no%+1 : bt_CE%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"clear.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(afi_result%)
                  on_click no%,clics
    no%=no%+1 : bt_divise%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"division.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_CE%)+width(bt_CE%)+1
                  on_click no%,clics
    no%=no%+1 : bt_multipli%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"multiplication.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_divise%)+width(bt_divise%)+1
                  on_click no%,clics
    no%=no%+1 : bt_moins%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"moins.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1
                  on_click no%,clics
    ' la deuxième rangée
    no%=no%+1 : bt_7%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"7.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_CE%)
                  on_click no%,clics
    no%=no%+1 : bt_8%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"8.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_7%)+width(bt_7%)+1
                  on_click no%,clics
    no%=no%+1 : bt_9%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"9.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_8%)+width(bt_8%)+1
                  on_click no%,clics
    ' la troisième rangée
    no%=no%+1 : bt_4%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"4.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_7%)
                  on_click no%,clics
    no%=no%+1 : bt_5%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"5.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_8%)
                  on_click no%,clics
    no%=no%+1 : bt_6%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"6.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_9%)
                  on_click no%,clics
    ' quatrième rangée
    no%=no%+1 : bt_1%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"1.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_4%)
                  on_click no%,clics
    no%=no%+1 : bt_2%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"2.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_5%)
                  on_click no%,clics
    no%=no%+1 : bt_3%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"3.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_6%)
                  on_click no%,clics
    ' cinquième rangée
    no%=no%+1 : bt_0%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"0.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_1%)
                  on_click no%,clics
    no%=no%+1 : bt_PC%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"Pourcentage.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_2%)
                  on_click no%,clics
    no%=no%+1 : bt_virg%=no% : picture no% : parent no%,0 : width no%,40 : height no%,40 : file_load no%,"virgule.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_3%)
                  on_click no%,clics
    ' Bouton +
    no%=no%+1 : bt_plus%=no% : picture no% : parent no%,0 : width no%,40 : height no%,80 : file_load no%,"plus.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_moins%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1
                  on_click no%,clics
    ' Bouton =
    no%=no%+1 : bt_egal%=no% : picture no% : parent no%,0 : width no%,40 : height no%,80 : file_load no%,"egal.bmp"
                  top no%,top(bt_3%) : left no%,left(bt_plus%)
                  on_click no%,clics
END_SUB
rem ============================================================================
SUB Retourne_Dimension_Bandeau_Et_Bord()
    ' controle de la position de la procédure dans le programme
    IF NUMBER_OBJECTS>0
       message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !"
       terminate
    END_IF
    ' création des VARIABLES GLOBALES
    IF VARIABLE("bandeau%")=0 then DIM bandeau%
    IF VARIABLE("bord%")=0 then DIM bord%
    ' Calcul de bandeau% et bord%
    dim_local w0%,h0%,w1%,h1%,w2%,h2%
    w0%=WIDTH(0) : h0%=HEIGHT(0)
    picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1)
    w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2
    ' Suppression du Picture devenu inutile
    delete 1
END_SUB
rem ============================================================================
fin:
   terminate
RETURN

J'ai procédé avec if/then (dans mon code d'origine) car dans la configuration du code, une seule des lignes du sous programme "clics" correspond à la condition if, vu que c'est le dernier clic qui est retenu pour vérifier la condition.
De plus le sous_programme est bien fermé par return.
Conclusion: il pourrait y avoir un bug avec if/then.

@Klaus,
Je n'ai pas retenu select/case pour la simple raison que j'utilise la numérotation d'objet par variable.
dans ce cas if/ then est plus pratique car j'utilise le numéro d'objet par son "nom" défini par la variable.

Pour moi, je considère avoir écris mon code correctement et à ma convenance, il y a un bug, Panoramic, quelque-part...

A+

PS:
Ygeronimi a écrit:
Chaque fois que j' ai voulu faire court en utilsant "then" j' ai eu des soucis.
Maintenant, elle est bannie chez moi.

Cette déclaration me fait monter dans les tours. Mad
Tu aurais, peut-être, été plus utile en signalant le problème quand tu l'as découvert.
Mais , bon, on est tous pareil....

Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 15 Sep 2015 - 14:57

A mon avis, le problème vient de la succession de "if...then"
- si tu ecris :
clic:
   if x%=1 then ........
return
Pas de souci

- si tu ecris :
Clic:
   if x%=1 then .......
   if x%=2 then ........
return
là tu vas en avoir un car le premier if n' est pas cloturé.
c' est presque comme s tu avais écris :
Clic:
   if x%=1 then ....... if x%=2 then ......
return


J' en rajoute, le return juste avant le end_if peut être utile pour gagner de la vitesse mais aussi 
si la variable de comparaison est modifié par le premier if adequat qu' elle rencontre.


@ Jean Claude,
Ce n' est une histoire de fou mais bien une histoire Panoramicien...
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5865
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 15:21

Ca n'en serait pas moins un bug puisque cette écriture n'est pas censé poser problème... sinon il ne faudrait plus l'avoir dans les tutoriaux...

Reste à voir si le problème n'est pas dans cette structure après l'appel d'un sous programme suivi d'une commande.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5088
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 16:40

@Ygeronimi,

tu dis:
Clic:
  if x%=1 then .......
  if x%=2 then ........
return


serait comme:
Clic:
  if x%=1 then ....... if x%=2 then ......
return

Si c'est la raison, alors c'est un BUG.

Une histoire de fous ou de panoramiciens: C'est pareil !   lol!  

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 16:44

Désolé, ceci marche pourtant parfaitement:
Code:
label clic
dim x%
button 1 : top 1,10 : left 1,10  : caption 1,"test 1" : on_click 1,clic
button 2 : top 2,10 : left 2,110 : caption 2,"test 2" : on_click 2,clic

end

Clic:
  x% = number_click
  if x%=1 then message "bouton 1"
  if x%=2 then message "bouton 2"
return
Le problème est plus complexe que ça. Le fait que l'erreur disparaît si l'on supprime toutes les commandes "parent no%,0" lors des créations d'objets, montre clairement que le problème n'est en aucun cas lié à la structure des IF...THEN. D'ailleurs, l'évènement on_click du bouton "divise" ne se déclenche même pas, et in ne rentre donc même pas dans la routine clic. Peu importe la façon dont les IF sont construits, puisqu'on n'y va pas.

C'est lié à la prise en compte des "parent no%,0" qui sèment la pagaille.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 16:58

Je pense comme Klaus, le problème est lié au géniteur zéro, pardon au PARENT no%,0 !
Bon, une histoire de fous ou de Panoramiciens.
Qu’importe le flacon (la strucure) pourvu qu’on ait l’ivresse (le bug). Cool
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 18:16

Je pense que c'est encore plus complexe que ça. Cela doit venir d'un problème de contexte, particulier au programme de la calculette. En effet, j'ai fait un programme de test, avec un objet edit et 100 boutons, tous avec "parent no%,0". Tous avec la même routine on_click, et cette routine contient une terrible sequence de IF...THEN. Et tout marche parfaitement: les clics se déclenchent bien, et aucun problème sur les IF...THEN. Voici le test:
Code:

label clic
dim x%, i%, j%, no%

edit 150 : top 150,10 : left 150,1100
full_space 0
for i%=1 to 10
  for j%=1 to 10
    no% = no% + 1
    button no%
      parent no%,0
      top no%, (i%-1)*30 + 10
      left no%,(j%-1)*100 + 10
      caption no%,"test "+str$(no%)
      on_click no%,clic
  next j%
next i%
end

Clic:
  x% = number_click
   if x%=1 then info(x%)
   if x%=2 then info(x%)
   if x%=3 then info(x%)
   if x%=4 then info(x%)
   if x%=5 then info(x%)
   if x%=6 then info(x%)
   if x%=7 then info(x%)
   if x%=8 then info(x%)
   if x%=9 then info(x%)
   if x%=10 then info(x%)
   if x%=11 then info(x%)
   if x%=12 then info(x%)
   if x%=13 then info(x%)
   if x%=14 then info(x%)
   if x%=15 then info(x%)
   if x%=16 then info(x%)
   if x%=17 then info(x%)
   if x%=18 then info(x%)
   if x%=19 then info(x%)
   if x%=20 then info(x%)
   if x%=21 then info(x%)
   if x%=22 then info(x%)
   if x%=23 then info(x%)
   if x%=24 then info(x%)
   if x%=25 then info(x%)
   if x%=26 then info(x%)
   if x%=27 then info(x%)
   if x%=28 then info(x%)
   if x%=29 then info(x%)
   if x%=30 then info(x%)
   if x%=31 then info(x%)
   if x%=32 then info(x%)
   if x%=33 then info(x%)
   if x%=34 then info(x%)
   if x%=35 then info(x%)
   if x%=36 then info(x%)
   if x%=37 then info(x%)
   if x%=38 then info(x%)
   if x%=39 then info(x%)
   if x%=40 then info(x%)
   if x%=41 then info(x%)
   if x%=42 then info(x%)
   if x%=43 then info(x%)
   if x%=44 then info(x%)
   if x%=45 then info(x%)
   if x%=46 then info(x%)
   if x%=47 then info(x%)
   if x%=48 then info(x%)
   if x%=49 then info(x%)
   if x%=50 then info(x%)
   if x%=51 then info(x%)
   if x%=52 then info(x%)
   if x%=53 then info(x%)
   if x%=54 then info(x%)
   if x%=55 then info(x%)
   if x%=56 then info(x%)
   if x%=57 then info(x%)
   if x%=58 then info(x%)
   if x%=59 then info(x%)
   if x%=60 then info(x%)
   if x%=61 then info(x%)
   if x%=62 then info(x%)
   if x%=63 then info(x%)
   if x%=64 then info(x%)
   if x%=65 then info(x%)
   if x%=66 then info(x%)
   if x%=67 then info(x%)
   if x%=68 then info(x%)
   if x%=69 then info(x%)
   if x%=70 then info(x%)
   if x%=71 then info(x%)
   if x%=72 then info(x%)
   if x%=73 then info(x%)
   if x%=74 then info(x%)
   if x%=75 then info(x%)
   if x%=76 then info(x%)
   if x%=77 then info(x%)
   if x%=78 then info(x%)
   if x%=79 then info(x%)
   if x%=80 then info(x%)
   if x%=81 then info(x%)
   if x%=82 then info(x%)
   if x%=83 then info(x%)
   if x%=84 then info(x%)
   if x%=85 then info(x%)
   if x%=86 then info(x%)
   if x%=87 then info(x%)
   if x%=88 then info(x%)
   if x%=89 then info(x%)
   if x%=90 then info(x%)
   if x%=91 then info(x%)
   if x%=92 then info(x%)
   if x%=93 then info(x%)
   if x%=94 then info(x%)
   if x%=95 then info(x%)
   if x%=96 then info(x%)
   if x%=97 then info(x%)
   if x%=98 then info(x%)
   if x%=99 then info(x%)
   if x%=100 then info(x%)

return

sub info(n%)
  text 150, "bouton "+str$(n%)
end_sub

Je pense que là, je reproduis au plus près la structure du programme de la calculette, dans les images, cependant.

Et avec des picture à la place des boutons, c'est pareil: ça marche:
Code:

label clic
dim x%, i%, j%, no%

edit 150 : top 150,10 : left 150,1100
full_space 0
for i%=1 to 10
  for j%=1 to 10
    no% = no% + 1
'    button no%
    picture no% : height no%,25 : width no%,90
      color no%,255,0,0
      parent no%,0
      top no%, (i%-1)*30 + 10
      left no%,(j%-1)*100 + 10
'      caption no%,"test "+str$(no%)
      print_target_is no%
      print "test "+str$(no%)
      on_click no%,clic
  next j%
next i%
end

Clic:
  x% = number_click
  if x%=1 then info(x%)
  if x%=2 then info(x%)
  if x%=3 then info(x%)
  if x%=4 then info(x%)
  if x%=5 then info(x%)
  if x%=6 then info(x%)
  if x%=7 then info(x%)
  if x%=8 then info(x%)
  if x%=9 then info(x%)
  if x%=10 then info(x%)
  if x%=11 then info(x%)
  if x%=12 then info(x%)
  if x%=13 then info(x%)
  if x%=14 then info(x%)
  if x%=15 then info(x%)
  if x%=16 then info(x%)
  if x%=17 then info(x%)
  if x%=18 then info(x%)
  if x%=19 then info(x%)
  if x%=20 then info(x%)
  if x%=21 then info(x%)
  if x%=22 then info(x%)
  if x%=23 then info(x%)
  if x%=24 then info(x%)
  if x%=25 then info(x%)
  if x%=26 then info(x%)
  if x%=27 then info(x%)
  if x%=28 then info(x%)
  if x%=29 then info(x%)
  if x%=30 then info(x%)
  if x%=31 then info(x%)
  if x%=32 then info(x%)
  if x%=33 then info(x%)
  if x%=34 then info(x%)
  if x%=35 then info(x%)
  if x%=36 then info(x%)
  if x%=37 then info(x%)
  if x%=38 then info(x%)
  if x%=39 then info(x%)
  if x%=40 then info(x%)
  if x%=41 then info(x%)
  if x%=42 then info(x%)
  if x%=43 then info(x%)
  if x%=44 then info(x%)
  if x%=45 then info(x%)
  if x%=46 then info(x%)
  if x%=47 then info(x%)
  if x%=48 then info(x%)
  if x%=49 then info(x%)
  if x%=50 then info(x%)
  if x%=51 then info(x%)
  if x%=52 then info(x%)
  if x%=53 then info(x%)
  if x%=54 then info(x%)
  if x%=55 then info(x%)
  if x%=56 then info(x%)
  if x%=57 then info(x%)
  if x%=58 then info(x%)
  if x%=59 then info(x%)
  if x%=60 then info(x%)
  if x%=61 then info(x%)
  if x%=62 then info(x%)
  if x%=63 then info(x%)
  if x%=64 then info(x%)
  if x%=65 then info(x%)
  if x%=66 then info(x%)
  if x%=67 then info(x%)
  if x%=68 then info(x%)
  if x%=69 then info(x%)
  if x%=70 then info(x%)
  if x%=71 then info(x%)
  if x%=72 then info(x%)
  if x%=73 then info(x%)
  if x%=74 then info(x%)
  if x%=75 then info(x%)
  if x%=76 then info(x%)
  if x%=77 then info(x%)
  if x%=78 then info(x%)
  if x%=79 then info(x%)
  if x%=80 then info(x%)
  if x%=81 then info(x%)
  if x%=82 then info(x%)
  if x%=83 then info(x%)
  if x%=84 then info(x%)
  if x%=85 then info(x%)
  if x%=86 then info(x%)
  if x%=87 then info(x%)
  if x%=88 then info(x%)
  if x%=89 then info(x%)
  if x%=90 then info(x%)
  if x%=91 then info(x%)
  if x%=92 then info(x%)
  if x%=93 then info(x%)
  if x%=94 then info(x%)
  if x%=95 then info(x%)
  if x%=96 then info(x%)
  if x%=97 then info(x%)
  if x%=98 then info(x%)
  if x%=99 then info(x%)
  if x%=100 then info(x%)

return

sub info(n%)
  text 150, "bouton "+str$(n%)
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Jean Claude

avatar

Nombre de messages : 5088
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   Mar 15 Sep 2015 - 19:01

J' arrête les recherches car Jack a constaté le BUG, il lui reste plus qu'a le trouver et le tuer.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Une histoire de fou ou j'ai besoin de vacances (résolu)   

Revenir en haut Aller en bas
 
Une histoire de fou ou j'ai besoin de vacances (résolu)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Besoin d'avis sur un chalet!
» L'histoire d'une vie, l'histoire d'une envie.
» [Résolu] histoire de souris
» Histoire d'une migration ?
» C'est l'histoire d'une cerise qui bouffait des pastèques.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: