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
» Panoramic et ses curiosités
par Jean Claude Aujourd'hui à 21:48

» Synedit Parameters
par Jean Claude Aujourd'hui à 21:15

» Utilitaire de suppression de fichiers
par Jean Claude Aujourd'hui à 21:11

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Hier à 21:16

» Compilateur FBPano
par jean_debord Hier à 9:56

» Bienvenue à Virtualalan !
par UltraVox Hier à 9:18

» Concours de Morpions
par jjn4 Hier à 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Gestion d' un classeur à onglet

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Yannick

avatar

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

MessageSujet: Gestion d' un classeur à onglet   Lun 27 Fév 2017 - 20:22

@ ceux que cela pourra aider.

Je me suis lancé la dedans et je crois que je suis arrivé à quelque chose de pas trop mal.
Il s' agit de gérer un classeur de x% onglets en Panoramic.
On peut ajouter, Supprimer puis rajouter des onglets dans la limite du nombre d' onglets maximum prédéfini.

Code:
dim no% : no%=7
dim x%
dim NbOnglet%
dim NbOngletMax% : NbOngletMax%=20
dim Tonglet$(NbOngletMax%,4)
' n%,0 stock le numéro d' objet de la feuille
' n%,1 stock l' état de la feuille
' n%,2 stock le numéro d' un objet associé ex: synedit
' n%,3 stock l' adresse du fichier associé
   for x%=1 to NbOngletMax%
      no%=no%+1
      Tonglet$(x%,0)=str$(no%)
      Tonglet$(x%,1)="00"
      ' "00" = non créé & non visible
      ' "10" = créé & caché
      ' "11" = créé & visible
   next x%
dim Selected_Tab%

label clic
label Selection

height 0,500
width 0,800
top 0,(screen_y-height(0))/2
left 0,(screen_x-width(0))/2
font_name 0,"Courier New"
caption 0,"Test Tab "

main_menu 1
   sub_menu 2 : parent 2,1 : caption 2,"Add"    : on_click 2,clic
   sub_menu 5 : parent 5,1 : caption 5,"Delete" : on_click 5,clic

container_tab 6
height 6,height_client(0)
width 6,width_client(0)-160

List 7
height 7,height_client(0)-10
width 7,150
top 7,5
left 7,left(6)+width(6)+5

end
' ==============================================================================

clic:
   ' Add
   if number_click = 2
      if NbOnglet%<NbOngletMax%
         Procedure_Add_Tab()
      else
         messagerie(1)
      end_if
      return
   end_if
   ' Delete
   if number_click = 5
      Procedure_Delete_Tab()
      return
   end_if
return
' ==============================================================================

Selection:
   Selected_Tab% = number_show
   caption 0,"Test Tab [ "+str$(Selected_Tab%)+" ]"
   Procedure_Show_Tab()
return
' ==============================================================================

sub Procedure_Add_Tab()
   dim_local i%,ong%,m%,c%
  
   NbOnglet%=0
   for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)="00" and c%=0
         Tonglet$(i%,1)="11"
         c%=1
         ong% = val(Tonglet$(i%,0))
         Tab ong%
         parent ong%,6
         caption ong%," objet "+str$(ong%)
         on_show ong%,selection
        
         show ong%
         NbOnglet% = NbOnglet%+1
      else
         if left$(Tonglet$(i%,1),1)="1"
            NbOnglet% = NbOnglet%+1
         end_if
      end_if
   next i%

   clear 7
   item_add 7,"Onglet | Etat"
   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))<>ong%
         if Tonglet$(i%,1)="11"
            Tonglet$(i%,1)="10"
            item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | Inactif"
         else
            if Tonglet$(i%,1)="10"
               item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | Inactif"
            end_if
         end_if
      else
         item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | ACTIF"
      end_if
   next i%

   if NbOnglet%=1
      Selected_Tab%=ong%
      caption 0,"Test Tab [ "+str$(ong%)+" ]"
   end_if
end_sub
' ------------------------------------------------------------------------------

sub Procedure_Show_Tab()
   dim_local i%

   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=selected_Tab%
         Tonglet$(i%,1)="11"
      else
         if left$(Tonglet$(i%,1),1)="1"
            Tonglet$(i%,1)="10"
         end_if
      end_if
   next i%

   clear 7
   item_add 7,"Onglet | Etat"
   for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)<>"00"
         if Tonglet$(i%,1)="10"
            item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | Inactif"
         else
            item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | ACTIF"
         end_if
      end_if
   next i%
end_sub
' ------------------------------------------------------------------------------

sub Procedure_Delete_Tab()
   dim_local i%
  
   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=Selected_Tab%
         Tonglet$(i%,1)="00"
         delete val(Tonglet$(i%,0))
         NbOnglet% = NbOnglet%-1
         exit_for
      end_if
   next i%
  
   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=selected_Tab%
         Tonglet$(i%,1)="11"
      else
         if left$(Tonglet$(i%,1),1)="1"
            Tonglet$(i%,1)="10"
         end_if
      end_if
   next i%
  
   clear 7
   item_add 7,"Onglet | Etat"
   for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)<>"00"
         if Tonglet$(i%,1)="10"
            item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | Inactif"
         else
            item_add 7,string$(6-len(Tonglet$(i%,0))," ")+Tonglet$(i%,0)+" | ACTIF"
         end_if
      end_if
   next i%
end_sub
' ------------------------------------------------------------------------------

sub messagerie(cx%)
   dim_local m%
  
   select cx%
   case 1
      m% = message_information_ok("Limite atteinte !!!"+chr$(13)+"Seulement "+str$(NbOngletMax%)+" onglets sont gérés...")
   end_select
end_sub
' ------------------------------------------------------------------------------

Je vous laisse juge.
affraid
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1592
Date d'inscription : 13/09/2009

MessageSujet: +++   Lun 27 Fév 2017 - 21:24

Pas mal du tout,
ça peut servir !
cheers alien king
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Yannick

avatar

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

MessageSujet: re   Lun 27 Fév 2017 - 22:32

Merci JJN4.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 441
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Gestion d' un classeur à onglet   Mar 28 Fév 2017 - 1:20


Merci Yannick pour ton partage ! Je garde !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Mar 28 Fév 2017 - 10:13

Merci Marc37.

Pour le fun, le début d' un tableur :

Code:
' ==============================================================================
'                               YG CALC
'                          Créé par Yannick
'                                 avec
'                         PANORAMIC vs 0.9.27
' ==============================================================================
' !MAIN
' ==============================================================================

Variables()
Constantes()
Labels()
Init()
Form_0()
end

' ==============================================================================
' !DECLARATION DES VARIABLES
' ==============================================================================

sub Variables()

' !  > Incrémentation
   dim no%
' !  > Comptage
   dim NbOnglet%
' !  > Sélection
   dim Selected_Tab%
   dim Selected_Grid%
   dim Selected_File$
end_sub

' ==============================================================================
' !DECLARATION DES CONSTANTES
' ==============================================================================

sub Constantes()
   dim_local i%

' !  > Objets  
' !   >> Gestion des onglets
   dim NbOngletMax% : NbOngletMax%=20
   dim Tonglet$(NbOngletMax%,4)
   ' n%,0 stock le numéro d' objet de la feuille
   ' n%,1 stock l' état de la feuille
   ' n%,2 stock le numéro d' un objet associé ex: synedit
   ' n%,3 stock l' adresse du fichier associé
   ' n%,3 stock nom de la feuille
   for i%=1 to NbOngletMax%
      no%=no%+1
      Tonglet$(i%,0)=str$(no%)
      Tonglet$(i%,1)="00"
      ' "00" = non créé & non visible
      ' "10" = créé & caché
      ' "11" = créé & visible
      Tonglet$(i%,2)="0"
      ' "0" pas de grid associé
   next i%
  
' !   >> Gestion des Grids
   dim Gril%(NbOngletMax%)
   for i%=1 to NbOngletMax%
      no%=no%+1
      Gril%(i%)= no%
      ' association à un onglet
      Tonglet$(i%,2)=str$(Gril%(i%))
   next i%    
        
' !   >> Autres Objets
   dim MM%      : no%=no%+1 : MM%=no%
   dim Sm%(100) : for i%=1 to 100 : no%=no%+1 : Sm%(i%)=no% : next i%
   dim cont%    : no%=no%+1 : cont%=no%
   dim classeur%: no%=no%+1 : classeur%=no%
end_sub

' ==============================================================================
' !DECLARATION DES LABELS
' ==============================================================================

sub Labels()
   label Clic
   label DClic
   label Change
   label Close0
   label Selection
end_sub

' ==============================================================================
' !INITIALISATIONS
' ==============================================================================

sub Init()  
end_sub

' ==============================================================================
' !INTERFACE
' ==============================================================================

sub Form_0()
   dim_local i%,obj%

' !  > Formatage du form principale
   height 0,600
   width 0,1000
   top 0,(screen_y-height(0))/2
   left 0,(screen_x-width(0))/2
  
   font_name 0,"Courier New"
   font_size 0,8
   font_bold 0
   caption 0,"YG - CALC"

' !  > Menu principal  
   main_menu MM%
      sub_menu Sm%(1) : parent Sm%(1),MM% : Caption Sm%(1),"Fichier"
      sub_menu Sm%(2) : parent Sm%(2),MM% : Caption Sm%(2),"Edition"
      sub_menu Sm%(3) : parent Sm%(3),MM% : Caption Sm%(3),"Paramètres"
      sub_menu Sm%(4) : parent Sm%(4),MM% : Caption Sm%(4),"A Propos"
      sub_menu Sm%(5) : parent Sm%(5),MM% : Caption Sm%(5),"Aide"
      
      sub_menu Sm%(6) : parent Sm%(6),Sm%(1)  : Caption Sm%(6),"Nouveau"     : on_click Sm%(6),Clic
      sub_menu Sm%(7) : parent Sm%(7),Sm%(1)  : Caption Sm%(7),"Ouvrir"
      sub_menu Sm%(8) : parent Sm%(8),Sm%(1)  : Caption Sm%(8),"Enregistrer"
      sub_menu Sm%(9) : parent Sm%(9),Sm%(1)  : Caption Sm%(9),"-"
      sub_menu Sm%(10): parent Sm%(10),Sm%(1) : Caption Sm%(10),"Fermer"     : on_click Sm%(10),Clic
      sub_menu Sm%(11): parent Sm%(11),Sm%(1) : Caption Sm%(11),"-"
      sub_menu Sm%(12): parent Sm%(12),Sm%(1) : Caption Sm%(12),"Quitter"

' !  > Toolbar      
   container cont%
   height cont%,32
   width cont%,width_client(0)-10
   top cont%,-3
   left cont%,5

' !  > Classeur  
   container_tab classeur%
   height classeur%,height_client(0)-(height(cont%)-3)-5
   width classeur%,width_client(0)-10
   top classeur%,top(cont%)+height(cont%)
   left classeur%,5
  
' !  > Grids
   create_hide
   for i%=1 to NbOngletMax%
      obj% = Gril%(i%)
      Grid obj%
      height obj%,height(classeur%)-30
      width obj%,width(classeur%)-10
      grid_fixed_color obj%,200,200,200
      grid_row obj%,300
      grid_column obj%,100
      grid_write obj%,1,1,"objet "+str$(obj%)
   next i%
   create_show
  
end_sub

' ==============================================================================
' !EVENEMENTS
' ==============================================================================

' !  > Clics
Clic:
   ' Add
   if number_click = Sm%(6)
      if NbOnglet%<NbOngletMax%
         Procedure_Add_Tab("")
      else
         messagerie(1)
      end_if
      return
   end_if
   ' Delete
   if number_click = Sm%(10)
      Procedure_Delete_Tab()
      return
   end_if
return
' ------------------------------------------------------------------------------

' !  > DClics
DClic:
return
' ------------------------------------------------------------------------------

' !  > Changes
Change:
return
' ------------------------------------------------------------------------------

' !  > Close0
Close0:
return
' ------------------------------------------------------------------------------

' !  > Selection
Selection:
   Selected_Tab% = number_show
   Procedure_Show_Tab()
return

' ==============================================================================
' !PROCEDURES ET FONCTIONS
' ==============================================================================

' !  > Ajout d' un onglet
sub Procedure_Add_Tab(F$)
   dim_local i%,ong%,m%,c%
  
   for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)="00" and c%=0
         Tonglet$(i%,1)="11"
         Tonglet$(i%,3)=F$
         if F$<>""
            Tonglet$(i%,4)= file_extract_name$(F$)
         else
            Tonglet$(i%,4)= "Feuil_"+Tonglet$(i%,0)
         end_if
         c%=i%
         ong% = val(Tonglet$(i%,0))
         Tab ong%
         parent ong%,classeur%
         caption ong%,Tonglet$(i%,4)
         on_show ong%,selection
        
         parent val(Tonglet$(i%,2)),val(Tonglet$(i%,0))
         show val(Tonglet$(i%,2))

         show ong%
         NbOnglet% = NbOnglet%+1
      else
         if left$(Tonglet$(i%,1),1)="1"
            NbOnglet% = NbOnglet%+1
         end_if
      end_if
   next i%

   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))<>ong%
         if Tonglet$(i%,1)="11"
            Tonglet$(i%,1)="10"
            caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
         else
            if Tonglet$(i%,1)="10"
               caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
            end_if
         end_if
      else
         caption val(Tonglet$(i%,0)),Tonglet$(i%,4)+" *"
      end_if
   next i%

   if NbOnglet%=1
      Selected_Tab%  = ong%
      Selected_Grid% = val(Tonglet$(c%,2))
      Selected_File$ = Tonglet$(c%,3)
   end_if
end_sub
' ------------------------------------------------------------------------------

' !  > Affichage d' un onglet
sub Procedure_Show_Tab()
   dim_local i%

   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=selected_Tab%
         Tonglet$(i%,1)="11"
         Selected_Grid% = val(Tonglet$(i%,2))
         Selected_File$ = Tonglet$(i%,3)
      else
         if left$(Tonglet$(i%,1),1)="1"
            Tonglet$(i%,1)="10"
         end_if
      end_if
   next i%

   for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)<>"00"
         if Tonglet$(i%,1)="10"
            caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
         else
            caption val(Tonglet$(i%,0)),Tonglet$(i%,4)+" *"
         end_if
      end_if
   next i%
end_sub
' ------------------------------------------------------------------------------

' !  > Suppression d' un onglet
sub Procedure_Delete_Tab()
   dim_local i%,x%
  
   for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=Selected_Tab%
         Tonglet$(i%,1)="00"
         Tonglet$(i%,3)=""
         Tonglet$(i%,4)=""
        
         hide Selected_Grid%
         parent Selected_Grid%,0

         delete val(Tonglet$(i%,0))
         NbOnglet% = NbOnglet%-1
         exit_for
      end_if
   next i%

   if NbOnglet%>0
      for i%=1 to NbOngletMax%
         if val(Tonglet$(i%,0))=selected_Tab%
            Tonglet$(i%,1)="11"
         else
            if left$(Tonglet$(i%,1),1)="1"
               Tonglet$(i%,1)="10"
            end_if
         end_if
      next i%
   else
      for i%=1 to NbOngletMax%
         Tonglet$(i%,1)="00"
      next i%
   end_if
  
   if NbOnglet%>0
      for i%=1 to NbOngletMax%
         if Tonglet$(i%,1)<>"00"
            if Tonglet$(i%,1)="10"
               caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
            else
               caption val(Tonglet$(i%,0)),Tonglet$(i%,4)+" *"
            end_if
         end_if
      next i%
   end_if
end_sub
' ------------------------------------------------------------------------------

sub SelectFreeGrid(F%)
   dim_local i%
   if variable("FreeGrid%")=0 then dim FreeGrid%
  
   for i%=1 to NbOngletMax%
      if Gril%(i%,2)=0
         FreeGrid% = Gril%(i%,1)
         Gril%(i%,2)=F%
         exit_for
      end_if
   next i%
end_sub
' ------------------------------------------------------------------------------

sub messagerie(cx%)
   dim_local m%,mess$,i%
  
   select cx%
   case 1
      mess$ = "Limite atteinte !!!"+chr$(13)
      mess$ = mess$+"Seulement "+str$(NbOngletMax%)+" onglets sont gérés..."
   case 2
      ' message d' implémentation
      for i%=1 to NbOngletMax%
         mess$ = mess$+Tonglet$(i%,1)+chr$(13)
      next i%
   end_select
   m% = message_information_ok(mess$)
end_sub
' ------------------------------------------------------------------------------

Laughing

heu...seuls les menus "Nouveau" et "Fermer" sont actifs.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Mar 28 Fév 2017 - 18:39

Encore +
Code:
' ==============================================================================
'                              YG CALC
'                          Créé par Yannick
'                                avec
'                        PANORAMIC vs 0.9.27
' ==============================================================================
' !MAIN
' ==============================================================================
hide 0
Variables()
Constantes()
Labels()
Init()
Form_0()
show 0
end

' ==============================================================================
' !DECLARATION DES VARIABLES
' ==============================================================================

sub Variables()

' !  > Incrémentation
  dim no%
' !  > Comptage
  dim NbOnglet%
' !  > Nom de fichier en ouverture
  dim FileToOpen$
  dim FileTosave$
' !  > Sélection
  dim Selected_Tab%
  dim Selected_Grid%
  dim Selected_File$
end_sub

' ==============================================================================
' !DECLARATION DES CONSTANTES
' ==============================================================================

sub Constantes()
  dim_local i%

' !  > Objets 
' !  >> Gestion des onglets
  dim NbOngletMax% : NbOngletMax%=20
  dim Tonglet$(NbOngletMax%,6)
  ' n%,0 stock le numéro d' objet de la feuille
  ' n%,1 stock l' état de la feuille
  ' n%,2 stock le numéro d' un objet associé ex: synedit
  ' n%,3 stock l' adresse du fichier associé
  ' n%,3 stock nom de la feuille
  for i%=1 to NbOngletMax%
      no%=no%+1
      Tonglet$(i%,0)=str$(no%)
      Tonglet$(i%,1)="00"
      ' "00" = non créé & non visible
      ' "10" = créé & caché
      ' "11" = créé & visible
      Tonglet$(i%,2)="0"
      ' "0" pas de grid associé
  next i%
 
' !  >> Gestion des Grids
  dim Gril%(NbOngletMax%)
  dim GrilNbRow%(NbOngletMax%)
  dim GrilNbCol%(NbOngletMax%)
 
  for i%=1 to NbOngletMax%
      no%=no%+1
      Gril%(i%)= no%
      GrilNbRow%(i%)= 100
      GrilNbCol%(i%)= 100
      ' association à un onglet
      Tonglet$(i%,2)=str$(Gril%(i%))
      Tonglet$(i%,5)=str$(GrilNbRow%(i%))
      Tonglet$(i%,6)=str$(GrilNbCol%(i%))
  next i%

' !  >> Boites de dialogue
  dim Odial%  : no%=no%+1 : Odial%=no%
  dim Sdial%  : no%=no%+1 : Sdial%=no%
       
' !  >> Autres Objets
  dim MM%      : no%=no%+1 : MM%=no%
  dim Sm%(100) : for i%=1 to 100 : no%=no%+1 : Sm%(i%)=no% : next i%
  dim cont%    : no%=no%+1 : cont%=no%
  dim classeur%: no%=no%+1 : classeur%=no%
end_sub

' ==============================================================================
' !DECLARATION DES LABELS
' ==============================================================================

sub Labels()
  label Clic
  label DClic
  label Change
  label Close0
  label Selection
  label Resize
end_sub

' ==============================================================================
' !INITIALISATIONS
' ==============================================================================

sub Init() 
end_sub

' ==============================================================================
' !INTERFACE
' ==============================================================================

sub Form_0()
  dim_local i%,obj%,x%,y%,nbc%,tr%,pref$

' !  > Formatage du form principale
  height 0,600
  width 0,1000
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
 
  font_name 0,"Courier New"
  font_size 0,8
  font_bold 0
  caption 0,"YG - CALC"

' !  > Menu principal 
  main_menu MM%
      sub_menu Sm%(1) : parent Sm%(1),MM% : Caption Sm%(1),"Fichier"
      sub_menu Sm%(2) : parent Sm%(2),MM% : Caption Sm%(2),"Edition"
      sub_menu Sm%(3) : parent Sm%(3),MM% : Caption Sm%(3),"Paramètres"
      sub_menu Sm%(4) : parent Sm%(4),MM% : Caption Sm%(4),"A Propos"
      sub_menu Sm%(5) : parent Sm%(5),MM% : Caption Sm%(5),"Aide"
     
      sub_menu Sm%(6) : parent Sm%(6),Sm%(1)  : Caption Sm%(6),"Nouveau"    : on_click Sm%(6),Clic
      sub_menu Sm%(7) : parent Sm%(7),Sm%(1)  : Caption Sm%(7),"Ouvrir"      : on_click Sm%(7),Clic
      sub_menu Sm%(8) : parent Sm%(8),Sm%(1)  : Caption Sm%(8),"Enregistrer" : on_click Sm%(8),Clic
      sub_menu Sm%(9) : parent Sm%(9),Sm%(1)  : Caption Sm%(9),"-"
      sub_menu Sm%(10): parent Sm%(10),Sm%(1) : Caption Sm%(10),"Fermer"    : on_click Sm%(10),Clic
      sub_menu Sm%(11): parent Sm%(11),Sm%(1) : Caption Sm%(11),"-"
      sub_menu Sm%(12): parent Sm%(12),Sm%(1) : Caption Sm%(12),"Quitter"    : on_click Sm%(12),Clic

' !  > Toolbar     
  container cont%
  height cont%,32
  width cont%,width_client(0)-10
  top cont%,-3
  left cont%,5

' !  > Classeur 
  container_tab classeur%
  height classeur%,height_client(0)-(height(cont%)-3)-5
  width classeur%,width_client(0)-10
  top classeur%,top(cont%)+height(cont%)
  left classeur%,5
 
' !  > Grids
  create_hide
  for i%=1 to NbOngletMax%
      obj% = Gril%(i%)
      Grid obj%
      height obj%,height(classeur%)-30
      width obj%,width(classeur%)-10
      grid_fixed_color obj%,200,200,200
      grid_row obj%,GrilNbRow%(i%)
      grid_column obj%,GrilNbCol%(i%)
      grid_write obj%,1,1,"objet "+str$(obj%)

      nbc%=1
      pref$=""
      tr%=0
      repeat
        tr%=tr%+1
        if tr%>1
            pref$ = chr$(63+tr%)
        end_if
        for x%=2 to 27
            nbc%=nbc%+1
            grid_write obj%,1,nbc%,pref$+chr$(63+x%)
            if nbc%=100 : exit_repeat : end_if
        next x%
      until nbc%= GrilNbRow%(i%)

      for y%=1 to GrilNbCol%(i%)
        grid_write obj%,y%+1,1,str$(y%)
      next y%

  next i%

  create_show
  on_resize 0,Resize
end_sub

' ==============================================================================
' !EVENEMENTS
' ==============================================================================

' !  > Clics
Clic:
  ' !  >> Nouveau
  if number_click = Sm%(6)
      if NbOnglet%<NbOngletMax%
        Procedure_Add_Tab("")
      else
        messagerie_info(1)
      end_if
      return
  end_if
  ' !  >> Ouvrir
  if number_click = Sm%(7)
      if NbOnglet%<NbOngletMax%
        open_dialog Odial%
        dir_dialog Odial%,":\"
        filter Odial%,"*.ygc|*.ygc"
        FileToOpen$ = file_name$(Odial%)
        delete Odial%
        if FileToOpen$<>"_"
            Procedure_Add_Tab(FileToOpen$)
        end_if
      else
        messagerie_info(1)
      end_if
      return
  end_if
  ' !  >> Enregistrer
  if number_click = Sm%(8)
      if Selected_File$=""
        Save_dialog Sdial%
        dir_dialog Sdial%,":\"
        filter Sdial%,"*.ygc|*.ygc"
        FileTosave$ = file_name$(Sdial%)
        delete Sdial%
        if FileToSave$<>"_"
            if right$(FileToSave$,4)<>".ygc"
              FileToSave$ = FileToSave$+".ygc"
            end_if
            if file_exists(FileToSave$)=1
              Messagerie_Warning(FileToSave$,1)
              if Ret_MessageWarning% = 1
                  grid_save Selected_grid%,Tonglet$(Selected_Tab%,5),Tonglet$(Selected_Tab%,6),FileToSave$
              end_if
            else
              grid_save Selected_grid%,Tonglet$(Selected_Tab%,5),Tonglet$(Selected_Tab%,6),FileToSave$
            end_if
        end_if
      else
        grid_save Selected_grid%,Tonglet$(Selected_Tab%,5),Tonglet$(Selected_Tab%,6),FileToSave$
      end_if
      return
  end_if
  ' !  >> Fermer
  if number_click = Sm%(10)
      Procedure_Delete_Tab()
      return
  end_if
  ' !  >> Quitter
  if number_click = Sm%(12)
      Terminate
      return
  end_if
return
' ------------------------------------------------------------------------------

' !  > DClics
DClic:
return
' ------------------------------------------------------------------------------

' !  > Changes
Change:
return
' ------------------------------------------------------------------------------

' !  > Close0
Close0:
return
' ------------------------------------------------------------------------------

' !  > Redimensionnement
Resize:
  ResizeForm0()
return
' ------------------------------------------------------------------------------

' !  > Selection
Selection:
  Selected_Tab% = number_show
  Procedure_Show_Tab()
return

' ==============================================================================
' !PROCEDURES ET FONCTIONS
' ==============================================================================

' !  > Ajout d' un onglet
sub Procedure_Add_Tab(F$)
  dim_local i%,ong%,m%,c%
 
  for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)="00" and c%=0
        Tonglet$(i%,1)="11"
        Tonglet$(i%,3)=F$
        if F$<>""
            Tonglet$(i%,4)= file_extract_name$(F$)
        else
            Tonglet$(i%,4)= "Feuil_"+Tonglet$(i%,0)
        end_if
        c%=i%
        ong% = val(Tonglet$(i%,0))
        Tab ong%
        parent ong%,classeur%
        caption ong%,Tonglet$(i%,4)
        on_show ong%,selection
       
        parent val(Tonglet$(i%,2)),val(Tonglet$(i%,0))
        if F$<>"" : grid_load val(Tonglet$(i%,2)),F$ : end_if
        show val(Tonglet$(i%,2))

        show ong%
        NbOnglet% = NbOnglet%+1
      else
        if left$(Tonglet$(i%,1),1)="1"
            NbOnglet% = NbOnglet%+1
        end_if
      end_if
  next i%

  for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))<>ong%
        if Tonglet$(i%,1)="11"
            Tonglet$(i%,1)="10"
            caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
        else
            if Tonglet$(i%,1)="10"
              caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
            end_if
        end_if
      else
        caption val(Tonglet$(i%,0)),Tonglet$(i%,4)+" *"
      end_if
  next i%

  if NbOnglet%=1
      Selected_Tab%  = ong%
      Selected_Grid% = val(Tonglet$(c%,2))
      Selected_File$ = Tonglet$(c%,3)
  end_if
end_sub
' ------------------------------------------------------------------------------

' !  > Affichage d' un onglet
sub Procedure_Show_Tab()
  dim_local i%

  for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=selected_Tab%
        Tonglet$(i%,1)="11"
        Selected_Grid% = val(Tonglet$(i%,2))
        Selected_File$ = Tonglet$(i%,3)
      else
        if left$(Tonglet$(i%,1),1)="1"
            Tonglet$(i%,1)="10"
        end_if
      end_if
  next i%

  for i%=1 to NbOngletMax%
      if Tonglet$(i%,1)<>"00"
        if Tonglet$(i%,1)="10"
            caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
        else
            caption val(Tonglet$(i%,0)),Tonglet$(i%,4)+" *"
        end_if
      end_if
  next i%
end_sub
' ------------------------------------------------------------------------------

' !  > Suppression d' un onglet
sub Procedure_Delete_Tab()
  dim_local i%,x%
 
  for i%=1 to NbOngletMax%
      if val(Tonglet$(i%,0))=Selected_Tab%
        Tonglet$(i%,1)="00"
        Tonglet$(i%,3)=""
        Tonglet$(i%,4)=""
       
        hide Selected_Grid%
        parent Selected_Grid%,0

        delete val(Tonglet$(i%,0))
        NbOnglet% = NbOnglet%-1
        exit_for
      end_if
  next i%

  if NbOnglet%>0
      for i%=1 to NbOngletMax%
        if val(Tonglet$(i%,0))=selected_Tab%
            Tonglet$(i%,1)="11"
        else
            if left$(Tonglet$(i%,1),1)="1"
              Tonglet$(i%,1)="10"
            end_if
        end_if
      next i%
  else
      for i%=1 to NbOngletMax%
        Tonglet$(i%,1)="00"
      next i%
  end_if
 
  if NbOnglet%>0
      for i%=1 to NbOngletMax%
        if Tonglet$(i%,1)<>"00"
            if Tonglet$(i%,1)="10"
              caption val(Tonglet$(i%,0)),Tonglet$(i%,4)
            else
              if NbOnglet%>0
                  caption val(Tonglet$(i%,0)),Tonglet$(i%,4)+" *"
              end_if
            end_if
        end_if
      next i%
  end_if
end_sub
' ------------------------------------------------------------------------------

sub SelectFreeGrid(F%)
  dim_local i%
  if variable("FreeGrid%")=0 then dim FreeGrid%
 
  for i%=1 to NbOngletMax%
      if Gril%(i%,2)=0
        FreeGrid% = Gril%(i%,1)
        Gril%(i%,2)=F%
        exit_for
      end_if
  next i%
end_sub
' ------------------------------------------------------------------------------

Sub ResizeForm0()
  dim_local i%

  width cont%,width_client(0)-10
   
  height classeur%,height_client(0)-(height(cont%)-3)-5
  width classeur%,width_client(0)-10
 
  for i%= 1 to NbOngletMax%
      height Gril%(i%),height(classeur%)-30
      width Gril%(i%),width(classeur%)-10
  next i%
 
end_sub
' ------------------------------------------------------------------------------

sub Messagerie_info(cx%)
  dim_local m%,mess$,i%
 
  select cx%
  case 1
      mess$ = "Limite atteinte !!!"+chr$(13)
      mess$ = mess$+"Seulement "+str$(NbOngletMax%)+" onglets sont gérés..."
  case 2
      ' message d' implémentation
      for i%=1 to NbOngletMax%
        mess$ = mess$+Tonglet$(i%,1)+chr$(13)
      next i%
  end_select
  m% = message_information_ok(mess$)
end_sub
' ------------------------------------------------------------------------------

sub Messagerie_Warning(F$,cx%)
  dim_local mess$,i%
  if variable ("Ret_MessageWarning%")=0 then dim Ret_MessageWarning%
 
  select cx%
  case 1
      mess$ = string$(int((100-len(F$)-2)/2),chr$(32))+chr$(34)+F$+chr$(34)+chr$(13)
      mess$ = mess$+string$(int((100-20)/2),chr$(32))+"est déjà enregistré."+chr$(13)
      mess$ = mess$+string$(int((100-44)/2),chr$(32))+"Voulez vous écraser le fichier existant ?..."
  end_select
  Ret_MessageWarning% = message_warning_yes_no(mess$)
end_sub
' ------------------------------------------------------------------------------


Dernière édition par Yannick le Mer 1 Mar 2017 - 10:32, édité 1 fois (Raison : Correction)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Gestion d' un classeur à onglet   Mer 1 Mar 2017 - 1:49

Une autre façon de présenter un sub_menu.
Changer les lignes 135 à 141 comme suit

Code:
      sub_menu Sm%(6) : parent Sm%(6),Sm%(1)  : Caption Sm%(6),chr$(9) + "Nouveau" : on_click Sm%(6),Clic
      sub_menu Sm%(7) : parent Sm%(7),Sm%(1)  : Caption Sm%(7),chr$(9) + "Ouvrir"      : on_click Sm%(7),Clic
      sub_menu Sm%(8) : parent Sm%(8),Sm%(1)  : Caption Sm%(8),chr$(9) + "Enregistrer" : on_click Sm%(8),Clic
      sub_menu Sm%(9) : parent Sm%(9),Sm%(1)  : Caption Sm%(9),"-"
      sub_menu Sm%(10): parent Sm%(10),Sm%(1) : Caption Sm%(10),chr$(9) + "Fermer"    : on_click Sm%(10),Clic
      sub_menu Sm%(11): parent Sm%(11),Sm%(1) : Caption Sm%(11),"-"
      sub_menu Sm%(12): parent Sm%(12),Sm%(1) : Caption Sm%(12),chr$(9) + "Quitter"

Pour sélectionner un sous-menu, on peut cliquer ou on peut taper la lettre soulignée correspondante.
Dans les deux cas le on_click est pris en compte.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Mer 1 Mar 2017 - 8:55

Cà marche Pas chez moi.
J' ai le menu tout décalé vers la droite.
Les premiers caractères sont bien soulignés.
Mais les touches sont inactives...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Mer 1 Mar 2017 - 10:35

J' ai corrigé le programme du deuxième post.
Il y avait une erreur... Embarassed

Attention, il n' est pas question que j' essaie de refaire excel...  Evil or Very Mad
C' est juste pour visualiser la gestion d' un claseur avec un nombre défini d' onglets.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Gestion d' un classeur à onglet   Mer 1 Mar 2017 - 16:18

Peut-être parce qu'il manque le caractère ampersand & avant le caption.
Essaie comme ceci :

Code:

sub_menu Sm%(6) : parent Sm%(6),Sm%(1)  : Caption Sm%(6),chr$(9) + "&Nouveau"    : on_click Sm%(6),Clic
      sub_menu Sm%(7) : parent Sm%(7),Sm%(1)  : Caption Sm%(7),chr$(9) + "&Ouvrir"      : on_click Sm%(7),Clic
      sub_menu Sm%(8) : parent Sm%(8),Sm%(1)  : Caption Sm%(8),chr$(9) + "&Enregistrer" : on_click Sm%(8),Clic
      sub_menu Sm%(9) : parent Sm%(9),Sm%(1)  : Caption Sm%(9),"-"
      sub_menu Sm%(10): parent Sm%(10),Sm%(1) : Caption Sm%(10),chr$(9) + "&Fermer"    : on_click Sm%(10),Clic
      sub_menu Sm%(11): parent Sm%(11),Sm%(1) : Caption Sm%(11),"-"
      sub_menu Sm%(12): parent Sm%(12),Sm%(1) : Caption Sm%(12),chr$(9) + "&Quitter"    : on_click Sm%(12),Clic



Chez moi ça donne :




L'appui sur la lettre soulignée ou <TAB> + lettre soulignée ou <SHIFT> + letrre soulignée  se comporte comme si on a cliqué sur le caption et le ON_CLICK est pris en charge.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Mer 1 Mar 2017 - 17:57

Je vais essayer... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Mer 1 Mar 2017 - 18:10

Cela fonctionne avec simplement le & et sans Chr$(9) qui décale tout.
Le premier caractère n' est pas souligné.
Mais bon, le menu doit être ouvert à la souris alors autant finir avec. Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Gestion d' un classeur à onglet   

Revenir en haut Aller en bas
 
Gestion d' un classeur à onglet
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Onglet boot.ini dans MSconfig
» Gestion des cantons en mode hors ligne
» msconfig onglet démarrage ( Résolu )
» ['Christa] Regrouper les catégories en Onglet
» Onglet du bas, catégorie. Il y a un petit défaut..

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