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.
Gestion d' un classeur à onglet Emptypar Jack Aujourd'hui à 10:03

» Un autre pense-bête...
Gestion d' un classeur à onglet Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Gestion d' un classeur à onglet Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Gestion d' un classeur à onglet Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Gestion d' un classeur à onglet Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Gestion d' un classeur à onglet Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Gestion d' un classeur à onglet Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Gestion d' un classeur à onglet Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Gestion d' un classeur à onglet Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Gestion d' un classeur à onglet Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Gestion d' un classeur à onglet Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Gestion d' un classeur à onglet Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Gestion d' un classeur à onglet Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Gestion d' un classeur à onglet Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Gestion d' un classeur à onglet 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

 

 Gestion d' un classeur à onglet

Aller en bas 
4 participants
AuteurMessage
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: Gestion d' un classeur à onglet   Gestion d' un classeur à onglet EmptyLun 27 Fév 2017 - 18: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
jjn4

jjn4


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

Gestion d' un classeur à onglet Empty
MessageSujet: +++   Gestion d' un classeur à onglet EmptyLun 27 Fév 2017 - 19:24

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




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyLun 27 Fév 2017 - 20:32

Merci JJN4.
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Gestion d' un classeur à onglet Empty
MessageSujet: Re: Gestion d' un classeur à onglet   Gestion d' un classeur à onglet EmptyLun 27 Fév 2017 - 23:20


Merci Yannick pour ton partage ! Je garde !
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyMar 28 Fév 2017 - 8: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
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyMar 28 Fév 2017 - 16: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 - 8:32, édité 1 fois (Raison : Correction)
Revenir en haut Aller en bas
papydall

papydall


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

Gestion d' un classeur à onglet Empty
MessageSujet: Re: Gestion d' un classeur à onglet   Gestion d' un classeur à onglet EmptyMar 28 Fév 2017 - 23: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
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyMer 1 Mar 2017 - 6: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
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyMer 1 Mar 2017 - 8: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
papydall

papydall


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

Gestion d' un classeur à onglet Empty
MessageSujet: Re: Gestion d' un classeur à onglet   Gestion d' un classeur à onglet EmptyMer 1 Mar 2017 - 14: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 :

Gestion d' un classeur à onglet Sans_t20


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
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyMer 1 Mar 2017 - 15:57

Je vais essayer... Laughing
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Gestion d' un classeur à onglet Empty
MessageSujet: re   Gestion d' un classeur à onglet EmptyMer 1 Mar 2017 - 16: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
Contenu sponsorisé





Gestion d' un classeur à onglet Empty
MessageSujet: Re: Gestion d' un classeur à onglet   Gestion d' un classeur à onglet Empty

Revenir en haut Aller en bas
 
Gestion d' un classeur à onglet
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Désactiver un onglet TAB
» Fermer un onglet
» Gestion de chaine
» Mémoriser le dossier du source dans un onglet de l'éditeur
» Gestion SQLITE

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: