Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Gestion d' un classeur à onglet | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Gestion d' un classeur à onglet Lun 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. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| | | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 27 Fév 2017 - 20:32 | |
| | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Gestion d' un classeur à onglet Lun 27 Fév 2017 - 23:20 | |
| Merci Yannick pour ton partage ! Je garde !
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 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 ' ------------------------------------------------------------------------------ heu...seuls les menus "Nouveau" et "Fermer" sont actifs. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 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) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Gestion d' un classeur à onglet Mar 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. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 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... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Mar 2017 - 8:35 | |
| J' ai corrigé le programme du deuxième post. Il y avait une erreur... Attention, il n' est pas question que j' essaie de refaire excel... C' est juste pour visualiser la gestion d' un claseur avec un nombre défini d' onglets. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Gestion d' un classeur à onglet Mer 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 : 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. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Mar 2017 - 15:57 | |
| Je vais essayer... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 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. | |
| | | Contenu sponsorisé
| Sujet: Re: Gestion d' un classeur à onglet | |
| |
| | | | Gestion d' un classeur à onglet | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |