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
» Logiciel de planétarium.
Menu pop_up Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Menu pop_up Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Menu pop_up Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Menu pop_up Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Menu pop_up Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Menu pop_up Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Menu pop_up Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Menu pop_up Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Menu pop_up Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Menu pop_up Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Menu pop_up Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Menu pop_up Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Menu pop_up Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Menu pop_up Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Menu pop_up Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

 

 Menu pop_up

Aller en bas 
AuteurMessage
Invité
Invité




Menu pop_up Empty
MessageSujet: Menu pop_up   Menu pop_up EmptyLun 19 Juil 2010 - 15:39

J'ai pas pu m'empêcher de refaire le programme (je devient fou!)
Si vous testez ce programme, et l'incorporez dans un autre. au départ bloquer le timer, jusqu'à ce que votre programme fonctionne.
Avec le timer, pas de n° de ligne d'erreur, celà peut reboucler plein de fois avant que l'erreur soit détecté.
Code:
' programmation d'un MENU POP_UP

' --------------programmation minimum de départ--------------------
dim s_menu%            :  s_menu%=10              :' défini le 1er objet qui FORM pour menu pop_up donc ici de 10 à 16
label ini_menu_pop_up  :  gosub ini_menu_pop_up  :' initialise l'ensemble des outils
' ---------- retour de l'initialisation ------------
' initialisation du programme général
width 0,600:height 0,350 :top 0,100 :left 0,100

' création d'un objet sur lequel on teste un clic_droit pour ouvrir un menu pop_up
list    1 :left 1,30:top 1,10 :width 1,250 : height 1,50 : hint 1,"clic droit:menu"
          item_add 1, "texte possédant un menu pop-up"  : item_add 1, "les objets colorés sont cliquable clic droit"
picture 2 :top 2,180 :width 2,200                        : hint 2,"clic droit:menu"
memo    3 :top 3,60:height 3,100                        :' affiche les variables permettant de programmer
                                                          ' le retour des clic
color 1,247,251,198:color 2,247,251,198

' ---------------------------------------------------------------------------------
' faire les tables des menus pop_up selon les objets
  gosub s_menu_miseEnForme  :rem " programmation des menus pop_up pour les objets "
' ---------------------------------------------------------------------------------
end

' ==============================================================================
' ==============================================================================
s_menu_miseEnForme:
  s_menu_objet%=0:' s'incrémentera en voyant "{"
  rem "***********************************************************************************************************"
  rem " NE FONCTIONNE PAS pour les objets: EDIT et MEMO possédant un menu_pop_up d'office et bloque le programme  "
  rem "***********************************************************************************************************"

    ' OBLIGATOIRE DE COMMENCER PAR { une accolade ouverte (défini le menu pour nouvel objet)
  rem "{" sous_menu pour un autre objet
  rem "|" pour le niveau 2 du sou_menu

  rem "Niveau 1  "  N1=niveau 1  N2=niveau 2
  ' ____________________________________________________________
  rem " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "
  rem " &&  menu pop_up  pour objet LIST 1  && "
  rem " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "
  objet_s_menu%(1)=1  :' menu pop_up de l'objet 1 qui est LIST 1 }"il faut définir le tableau poir l'objet"
  '    { l'accolade ouverte est obligatoire pour commencer le menu d'un nouvel objet ( "}"  est optionnel pour fermer l'objet
                ' pour programmer:  lire
                '                  fermer  avec: fiche |programme
                '                  édition avec: copier|coller
                '                  rouspéter
  rem        " N1  "
  s_menu_a$= "{lire"                        : gosub s_menu_define
  '          _______________________
  rem        "N1    |N2  |N2      "
  s_menu_a$= "fermer>|fiche|programme"      : gosub s_menu_define
  '          _____________________________
  rem        "N1      |N2    |N2    |N2    "
  s_menu_a$= "édition>|couper|copier|coller" : gosub s_menu_define
  '                  ^__ pour mettre la flêche à droite de l'élément

  rem        "N1      "
  s_menu_a$= "rouspéter"                    : gosub s_menu_define
  ' _____________________________________________________________
  rem " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "
  rem " &&  menu pop_up pour objet PICTURE  && "
  rem " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "
  objet_s_menu%(2)=2                        :' N° de l'objet

  s_menu_a$="{nouveau objet>|soulever|laver" : gosub s_menu_define
  '                        ^__ idem

  '      N1          N2      N3      N3    N2    N3      N3
  ' la ligne suivante n'est pas obligatoire  (seulement pour mettre un objet en accolade) si on veut
  s_menu_a$="}"                              :gosub s_menu_define :' termine l'objet ' DOIT ÊTRE SEUL

  rem "***********************************************************************"
  rem "****                FIN DES DÉFINITIONS A PROGRAMMER              ****"
  rem " **********************************************************************"

  ' STOP  STOP  STOP  STOP  STOP  STOP  STOP  STOP  STOP  STOP  STOP  STOP '
  ' ______________________________________________________________________

            rem "maintenant programmation
    ' --------------------------------------------------------------
    on_error_goto erreur

    clear s_menu%+1:clear s_menu%+4
    for s_menu_objet% =1 to s_menu_fin%
      for s_menu_a%=1 to 10
        if s_menu$(s_menu_objet%,s_menu_a%)<>""
            item_add s_menu%+1,s_menu$(s_menu_objet%,s_menu_a%)
            for s_menu_b%=1 to 10
              if left$(s_menu$(s_menu_objet%,s_menu_a%),1)=left$(s_menu1$(s_menu_objet%,s_menu_b%),1)
                  if s_menu1$(s_menu_objet%,s_menu_b%)<>""
                    item_add s_menu%+4,s_menu1$(s_menu_objet%,s_menu_b%)
                  end_if
              end_if
            next s_menu_b%
        end_if
      next s_menu_a%
    next s_menu_objet%
return
' ==============================================================================
' ==========INITIALISATION MENU POP_UP =========================================
ini_menu_pop_up:
  label  s_menu_reponse        :' une fois objet cliqué et choisi, branchement ici
  label s_menu_teste            :' prévu une fois l'élément cliqué
  label s_menu_define          :' met en tableau les éléments du menu
  label s_menu_table            :' s/prg pour s_menu_define
  label test_mouse_droit        :' le timer vérifie l'éventualité d'un clic droit
  label s_menu_control          :' gestion de l'affichage du menu pop_up
  label s_menu_miseEnForme      :' programmation des différents menus assiciés aux objets (au départ)
  label erreur

  dim s_menu_objet%            :' défini le numéro de l'objet associé à la liste à programmer (mettre en menu pop_up)
  dim s_menu_x%                :' position x de la souris sur l'objet
  dim s_menu_y%                :' position y et n° de l'élément
  dim ss_menu_y%                :' ligne pour s/menu
  dim s_menu_y1%                :' mémoire du passage précédent
  dim s_menu_top%              :' prend la position pour le TOP de form menu%+3 soit s/menu
  dim s_menu_Index%            :' index pour incrémenter le tableau menu
  dim s_menu_Index1%            :' idem mais pour s/menu
  dim mouse%                    :' N° correspondant à l'ensemble du menu d'un objet (l'objet est défini par objet_s_menu%(mouse%)
  dim mouse1%                  :' si = à mouse%, ne réaffiche pas
  dim choi%                    :' pour mettre le tableau en forme 1: menu  2: s/menu
  dim s_menu_fin%              :' nombre d'objets possédant un menu pop_up
  dim passage%                  :' décodage d'erreurs perturbés par le timer (normalement inutile avec ici memo 3)

  dim s_menu$(10,20)            :' table du menu pour 10 objets de 20 éléments verticaux
  dim s_menu1$(10,20)          :' table du sous/menu ici 10 pour 10 objets
  dim objet_s_menu%(20)                                :' défini le numéro d'objet qui correspond au menu
                                ' expl list 1 donc objet 1, donc dans l'ordre des données installées, sera utilisé par list 1
  ' -dim- suivant, remplace les variables: a% b% c% a$ b$ c$ d$
  dim s_menu_a$ , s_menu_c$ , s_menu_b$ , s_menu_d$  , s_menu_a% , s_menu_b% , s_menu_c%
  ' objets pour le fonctionnement
  ' objets pour sous_menu 1er niveau
  form      s_menu% :hide s_menu%:border_hide s_menu%:width s_menu%,150:height s_menu%,200
                    top s_menu%,200 :left s_menu%,200:color s_menu%,255,0,0
  dlist  s_menu%+1
  picture s_menu%+2 :parent s_menu%+2,s_menu%:left s_menu%+2,1:top s_menu%+2,1: :width s_menu%+2,150
                    on_click s_menu%+2, s_menu_teste
  ' ------------------------------------------------------------------------------------------------
  ' objets pour sous_menu 2ème niveau
  form    s_menu%+3 :hide s_menu%+3:border_hide s_menu%+3:width s_menu%+3,150:height s_menu%+3,200
                    top s_menu%+3,200 :left s_menu%+3,350:color s_menu%+3,255,143,0
  dlist  s_menu%+4
  picture s_menu%+5 :parent s_menu%+5,s_menu%+3:left s_menu%+5,1:top s_menu%+5,1: :width s_menu%+5,150
                    on_click s_menu%+5, s_menu_teste
  ' ------------------------------------------------------------------------------------------------
  timer  s_menu%+6 :on_timer s_menu%+6,test_mouse_droit
return

'===============================================================================
s_menu_table:
  select choi%
      case 1                                                :' menu pop_up principal
        item_add s_menu%+1,s_menu_c$                      :    s_menu_Index%=s_menu_Index%+1
        s_menu_d$=chr$(s_menu_Index%+64)                  :    s_menu_c$=s_menu_d$+")"+s_menu_c$:s_menu_c%=0
        s_menu$(s_menu_objet%,s_menu_Index%) = s_menu_c$
      case 2                                                :' s/menu
        item_add s_menu%+4,s_menu_c$                      :    s_menu_Index1%=s_menu_Index1%+1
        s_menu_c%=s_menu_c%+1                              :    s_menu_c$=s_menu_d$+str$(s_menu_c%)+")"+s_menu_c$
        s_menu1$(s_menu_objet%,s_menu_Index1%) = s_menu_c$
  end_select
return
' ==============================================================================
s_menu_define:
  if left$(s_menu_a$,1)="{"
      if len(s_menu_a$)>1 then s_menu_a$=right$(s_menu_a$,len(s_menu_a$)-1)
      s_menu_objet%=s_menu_objet%+1  :  s_menu_Index%=0:s_menu_Index1%=0:s_menu_fin%=s_menu_objet%
      s_menu_Index%=0
  end_if
  s_menu_c$="":choi%=1
  for s_menu_a%=1 to len(s_menu_a$)
      s_menu_b$=mid$(s_menu_a$,s_menu_a%,1)
      if s_menu_b$="|"
        gosub s_menu_table : choi%=2 : s_menu_c$=""
      else
        s_menu_c$=s_menu_c$+s_menu_b$
      end_if
  next s_menu_a%
  if s_menu_c$<>"" and s_menu_b$<>"}" then gosub s_menu_table
return
' ==============================================================================
erreur:
 off_error_goto : timer_off s_menu%+6 : stop
 ' avec le timer, pas de n° de ligne affiché, donc attention
return
' ==============================================================================
test_mouse_droit:
  ' parcourt les objets qui ont un menu pop_up
  for mouse%=1 to s_menu_fin%        :' 2 à modifier selon le nb d'objets
      if mouse_right_down(objet_s_menu%( mouse%))=1 then exit_for
  next mouse%
  if mouse%  <=  s_menu_fin% then gosub s_menu_reponse
return
' ==============================================================================
s_menu_reponse:
  timer_off s_menu%+6
  clear s_menu%+1:clear s_menu%+4
  for s_menu_a%=1 to 10
 '  passage%=passage%+1:item_add 3,passage% :' pour le débogage à cause du timer STOP ne convient pas bien (déplacement de la ligne)
      if s_menu$(mouse%,s_menu_a%)<>""                          :' on ajoute du tableau les éléments ayant le même repère
        item_add s_menu%+1,s_menu$(mouse%,s_menu_a%)
        for s_menu_b%=1 to 10
            if left$(s_menu$(mouse%,s_menu_a%),1)=left$(s_menu1$(mouse%,s_menu_b%),1)
              if s_menu1$(mouse%,s_menu_b%)<>""
                item_add s_menu%+4,s_menu1$(mouse%,s_menu_b%)
              end_if
            end_if
        next s_menu_b%
      end_if
  next s_menu_a%

  repeat : until mouse_right_up(objet_s_menu%(mouse%))=1
  ' positions de la souris pour l'emplacement des objets (et non de la ligne)
  s_menu_x%=mouse_x_position(objet_s_menu%(mouse%))+left(objet_s_menu%(mouse%))
  left s_menu%,s_menu_x% +left(0)                              :' position de form principal au moment du clic droit
  s_menu_y%=mouse_y_position(objet_s_menu%(mouse%))+top(objet_s_menu%(mouse%))+top(0)
  top s_menu%,s_menu_y%+20
  if mouse% <> mouse1%
      s_menu_Index%=0
      2d_target_is s_menu%+2:2d_clear : print_target_is s_menu%+2 :font_name s_menu%+2,"default":font_bold_off s_menu%+2
      for s_menu_a%=1 to 10:if s_menu$(mouse%,s_menu_a%)="" then exit_for  :' connaitre le nb de lignes à afficher
        s_menu_a$=s_menu$(mouse%,s_menu_a%):s_menu_a$=right$(s_menu_a$,len(s_menu_a$)-2):s_menu_a$=left$(s_menu_a$,len(s_menu_a$)-1)
        print " ", s_menu_a$
        s_menu_Index%=s_menu_a%+1
      next s_menu_a%
  end_if
  mouse1%=mouse%
  height s_menu%,( (s_menu_Index%+1 )-2) *14  :  show s_menu%
  timer_interval s_menu%+6,200 : on_timer s_menu%+6, s_menu_control : timer_on s_menu%+6
return

' ==============================================================================
s_menu_control:
  if s_menu_y%<>s_menu_y1%                                :' on affiche seulement si c'est une autre ligne (diminution des flash)
    left s_menu%+3, left(s_menu%)+width(s_menu%)
    top s_menu%+3, top(s_menu%)+s_menu_y%/14            :' 2ème form s/menu
    height s_menu%+3,6*14+5

    ' affiche en normal le menu_pop_up de départ
    2d_target_is s_menu%+2  : print_target_is s_menu%+2 : font_name s_menu%+2,"default"
    2d_pen_color 255,255,255 : 2d_fill_color 255,255,255 : font_color s_menu%+2,0,0,0 : font_bold_off s_menu%+2

    if s_menu_y1%>0 and s_menu_y1%<=count(s_menu%+1)    :' si la ligne est dans les paramètres du dlist
        s_menu_a$=item_read$(s_menu%+1,s_menu_y1%) : 2d_rectangle 0,(s_menu_y1%-1)*14,140,s_menu_y1%*14
        s_menu_a$=right$(s_menu_a$,len(s_menu_a$)-2)                          :' enlève le repère pour l'affichage
        print_locate 5, (s_menu_y1%-1)*14  : print s_menu_a$
    end_if
    ' ensuite affiche la ligne parcourue par la souris

    s_menu_top%=mouse_y_position( s_menu%+2)            :' prend la position pour form s/menu
    top s_menu%+3,s_menu_top% +top(s_menu%)-7            :' form s_menu% + la lig parcourue
    s_menu_y%=(s_menu_top%-6)/14+1                      :' n° de la ligne en cours
    if s_menu_y%>count(s_menu%+1) then s_menu_y%=count(s_menu%+1)

    font_bold s_menu%+2                                  :' on affiche la ligne en sélection
    2d_pen_color 183,196,180:2d_fill_color 255,0,0: font_color s_menu%+2,255,255,255  :' 183,196,180 valeurs avant
    s_menu_a$=item_read$(s_menu%+1,s_menu_y%)    : 2d_rectangle 0,(s_menu_y%-1)*14,140,s_menu_y%*14
    s_menu_a$=right$(s_menu_a$,len(s_menu_a$)-2)
    ' si la droite du texte à ">", alors affichage du triangle avec le chiffre "4" et Webdings
    if instr(s_menu_a$,">")>0
        font_name s_menu%+2,"default":print_locate 5,  (s_menu_y%-1)*14:  print left$(s_menu_a$,instr(s_menu_a$,">")-1)
        font_color s_menu%+2,0,0,0:2d_fill_color 255,255,255
        font_name s_menu%+2,"Webdings"
        print_locate 140,(s_menu_y%-1)*14-2 : print "4"
    else
        font_name s_menu%+2,"default"
        print_locate 5,  (s_menu_y%-1)*14  : print s_menu_a$
    end_if
  end_if
  s_menu_y1%=s_menu_y%                                    :' mémoire pour réafficher normalement le balayage suivant

  s_menu_y%=(mouse_y_position( s_menu%+2)-6)/14+1 :if s_menu_y%>count(s_menu%+1) then s_menu_y%=count(s_menu%+1)
  ' ----------------------------------------------------------------------------

  if right$( item_read$(s_menu%+1,s_menu_y%),1)=">"
    ' dans la 2ème zone, lorsqu'il y a des sous_lignes
    s_menu_b$=  left$( s_menu$(mouse%,s_menu_y%),1)      :' prend le repère de la ligne pour ne choisir dans le s/menu le même repère
    clear s_menu%+4
    for s_menu_a%=1 to 10
        if s_menu_b$=left$(s_menu1$(mouse%,s_menu_a%),1)  :' si le repère du menu est le même du s/menu
          s_menu_c$=s_menu1$(mouse%,s_menu_a%)
          item_add s_menu%+4," "+right$(s_menu_c$,len(s_menu_c$)-3) :' on enlève le repère avant de rajouter ex:  C3)
        end_if
    next s_menu_a%
    height s_menu%+3, count(s_menu%+4)*14
    height s_menu%+5, count(s_menu%+4)*14                :' adapte à la form + picture s/menu
    show s_menu%+3                                      :' on affiche les sous ensembles en normal
    font_color s_menu%+5,0,0,0:font_bold_off s_menu%+5
    2d_target_is s_menu%+5 :2d_clear :2d_fill_color 255,255,255
    2d_pen_color 255,255,255 : 2d_rectangle 0,(s_menu_y%-1)*14-2,145,s_menu_y%*14
    print_target_is s_menu%+5
    for s_menu_a%=1 to count(s_menu%+4)
        print item_read$(s_menu%+4,s_menu_a%)
    next s_menu_a%
    s_menu_x%=mouse_x_position(s_menu%+5)                :' suivre la souris vers la droite vers s/menu (pas trouvé d'autre solution)

    if mouse_x_position(s_menu%+2)> 140 and mouse_x_position(s_menu%+5) > 10 :' dans la zone du s/menu
        timer_interval s_menu%+6,600                      :' on réduit le timer pour diminuer les effets flash
        ss_menu_y%= (mouse_y_position(s_menu%+5)-4)/14 +1 :' on recherche la ligne sur laquelle la souris se déplace
        if ss_menu_y%>count(s_menu%+4) then ss_menu_y%=count(s_menu%+4)
        ' la ligne en cause est affichée en rouge, écriture blanche, et Gras
        2d_fill_color 255,143,0:font_color s_menu%+5,255,255,255
        2d_rectangle 0,(ss_menu_y%-1)*14-2,145,ss_menu_y%*14 :font_bold s_menu%+5
        print_locate 5,(ss_menu_y%-1)*14 :print item_read$(s_menu%+4,ss_menu_y%)
    else
        timer_interval s_menu%+6,200                      :' on augmente la fréquence de balayage en réduisant le temps
    end_if
  else
    font_name s_menu%+2,"default"                        :' si pas ">" alors pas de s/menu et affichage normal
    hide s_menu%+3
  end_if
return

' ==============================================================================

s_menu_teste:
  timer_off s_menu%+6
  item_add 3,"******************************"
  item_add 3,"s_menu_y%    :"+str$(s_menu_y%)
  item_add 3,"ss_menu-y%  :"+str$(ss_menu_y%)
  item_add 3,"s_menu_index%:"+str$(s_menu_index%)
  item_add 3,"      mouse%=" +str$(mouse%)


  rem "***********************************************"
  rem "** objet 1: list 1                          **"
  rem "***********************************************"
  if mouse%=1
      if s_menu_y%>0 and s_menu_y%<= count(s_menu%+1)
        if right$( item_read$(s_menu%+1,s_menu_y%),1)<>">"
            ' menu pop_up
            message  item_read$(s_menu%+1,s_menu_y%)    :item_add 3,item_read$(s_menu%+1,s_menu_y%)
            ' s_menu_y% 1= lire
            ' s_menu_y% 4= rouspéter
        else
        ' sous-menu pop_up
            if ss_menu_y%>0 and ss_menu_y% <= count(s_menu%+4)
              message  item_read$(s_menu%+4,ss_menu_y%):item_add 3,item_read$(s_menu%+4,ss_menu_y%)
              ' si s_menu_y%=2 :>>    ss_menu_y%=1:fiche  /  ss_menu_y%=2:programme
              if s_menu_y%=2 and ss_menu_y%=2 then terminate
            end_if
        end_if
      end_if
  end_if

  rem "***********************************************"
  rem "** objet 2: picture 2                        **"
  rem "***********************************************"
  if mouse%=2
      if right$( item_read$(s_menu%+1,s_menu_y%),1)<>">"
      ' menu pop_up
        message  item_read$(s_menu%+1,s_menu_y%)    :item_add 3,item_read$(s_menu%+1,s_menu_y%)
      else
      ' sous-menu pop_up
        if ss_menu_y%>0 and ss_menu_y% <= count(s_menu%+4)
            message item_read$(s_menu%+4,ss_menu_y%)  :item_add 3,item_read$(s_menu%+4,ss_menu_y%)
        end_if
      end_if
  end_if

  rem "***********************************************"
  rem "** objet 3: à définir                        **"
  rem "***********************************************"
  if mouse%=3
      if right$( item_read$(s_menu%+1,s_menu_y%),1)<>">"
      ' menu pop_up
        message  item_read$(s_menu%+1,s_menu_y%)
      else
      ' sous-menu pop_up
        if ss_menu_y%>0 and ss_menu_y% <= count(s_menu%+4)
            ' programmation de chaque sous-menu

        end_if
      end_if
  end_if
  hide s_menu%:hide s_menu%+3
  on_timer s_menu%+6,test_mouse_droit
  timer_on s_menu%+6
return

J'ai oublié de préciser que dans l'exemple, le list du haut et le picture du bas sont cliquable avec le bouton droit


Dernière édition par cosmos70 le Mar 20 Juil 2010 - 1:03, édité 8 fois
Revenir en haut Aller en bas
Invité
Invité




Menu pop_up Empty
MessageSujet: Re: Menu pop_up   Menu pop_up EmptyLun 19 Juil 2010 - 15:56

Je dois rajouter que pour les sous menus, il faut suivre la ligne pour déclencher la saisie des sous-lignes. J'ai pas trouvé d'autre moyens.

Je viens de modifier 2 lignes 210 et 211, pour que le menu soit décalé par rapport à l'emplacement de FORM 0
je réédite pour bien préciser une chose:
les objets EDIT et MEMO ont déjà un menu, et l'utilisation de ce programme sur ces objets bloque le programme
Revenir en haut Aller en bas
Invité
Invité




Menu pop_up Empty
MessageSujet: Re: Menu pop_up   Menu pop_up EmptyLun 19 Juil 2010 - 18:01

Super ces menus!!! Basketball
Revenir en haut Aller en bas
Invité
Invité




Menu pop_up Empty
MessageSujet: Re: Menu pop_up   Menu pop_up EmptyLun 19 Juil 2010 - 21:55

Même si ce programme intéresse personne (ce qui me confortait de vouloir le mettre dans les inutilitaires -et je ne l'ai pas fait), j'ai fais en sorte que toutes variables soient dans l'initialisation pour ce programme.
Ce qui veut dire que: a% b% a$ ... ont disparus pour ne pas éventuellement perturber le programme les appelant. Vu que le timer peut poser des problèmes sur une variable en cours de construction0
Bonne nuit
Revenir en haut Aller en bas
Invité
Invité




Menu pop_up Empty
MessageSujet: Re: Menu pop_up   Menu pop_up EmptyMar 20 Juil 2010 - 1:41

Je refais un post non pas pour obliger à regarder ce programme, mais pourtant si!

Il y a une chose très importante à savoir. Déjà en dehors du fait de pouvoir de pouvoir tester ici UN CLIC DROIT (mais cela pourrait être autre chose), celui de sélectionner un élément: ici une ligne de menu qui "s'allume" lorsque le curseur passe dessus sans cliquer.

Mais il y a autre chose, dont il faut que je fasse la remarque. Un moment donné, lorsque j'ai rajouté un élément pouvant être cliqué (donc vu par le timer), je me suis retrouvé avec des erreurs que je ne comprenais pas. Des list bound...

En regardant de près je me suis aperçu du code suivant:
Code:
test_mouse_droit:
  ' parcourt les objets qui ont un menu pop_up
  for a%=1 to 2        :' 2 à modifier selon le nb d'objets
      if mouse_right_down(objet_s_menu%( a%))=1 then gosub s_menu_reponse
  next a%
return

C'était la façon que j'avais codé pour savoir qu'elle objet avait été cliqué.
donc:
Citation :
if mouse_right_down(objet_s_menu%( a%))=1 then gosub réponse
le timer repère l'objet, et on suit la programmation. Le gosub renvoi ailleurs, et lorsqu'il a fini, il continu.
GROSSIÈRE ERREUR! Il y a le TIMER qui lui revient à la charge et incrémente la boucle for/next, donc l'objet cliqué n'est plus en rapport avec le premier.
Si j'imagine faire un programme de calcul avec par exemple: b%=a%*a%, voyez le résultat si le timer emploi la même variable.
Donc en prenant l'habitude de se servir du TIMER, il faut bien prendre conscience que lui continu son travail, et le codage doit en tenir compte.

J'ai pris un soin à bien commenté (j'espère) pour pouvoir suivre le programme. Le choix des variables ne facilite pas la lecture, mais pour que ce programme puisse servir dans un autre, il fallait bien compliquer les noms.

Maintenant que ce programme plaise ou non, c'est pas le problème. Cela fait tout de même beaucoup de lignes à intégrer.
Revenir en haut Aller en bas
Contenu sponsorisé





Menu pop_up Empty
MessageSujet: Re: Menu pop_up   Menu pop_up Empty

Revenir en haut Aller en bas
 
Menu pop_up
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Idée de menu
» Menu personalisé avec icones et menu contextuel
» Sub-menu is not menu avec Panoramic.exe
» Menu en 3D.
» Menu

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: