Mai 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 | 31 | | | Calendrier |
|
| | Exemple de gestion des onglets en Panoramic pur | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Exemple de gestion des onglets en Panoramic pur Lun 28 Mar 2011 - 14:13 | |
| J'ai trouvé une utilisation intéressante de l'excellent objet CONTAINER. Avec cet objet, on peut réaliser, assez simplement, des onglets à cliquer. J'avais fait un pseudo-objet TAB à insérer par #INCLUDE, mais maintenant, on peut arriver à un résultat très satisfaisant beaucoup plus simplement, à l'aide d'un objet CONTAINER pour le corps de chaque page d'onglet, et d'un bouton standard pour la partie à cliquer. Le tout, c'est de positionner les objets judicieusement, et de montrer ou cacher le container correspondant au bouton, lors d'un clic sur un bouton. Le programme suivant montre le principe. On peut changer le nombre d'onglets (entre 1 et 10) et la largeur des onglets, par des champs de saisie. Puis un clic sur le bouton "Créer les onglets" affichera le résultat qui est fonctionnel. On peut passer d'un onglet à un autre. On peut aussi changer le nombre d'onglets et/ou leur largeur et recliquer ce bouton - l'affichage s'adaptera. Voici le code: - Code:
-
' Construction d'onglets à l'aide de containers
' Ce programme montre la simulation d'onglets (TAB) à l'aide d'objets standard ' Panoramic: button et container. Les onglets à cliquer sont réalisés sous ' forme de boutons classiques juxtaposés. Les pages des onglets sont des container ' pouvant contenir les objets Panoramic associés. Chaque click sur un des boutons ' d'onglet va cacher l'onglet actif et motrer l'onglet sélectionné; de même, la ' police du libellé du bouton s'affichera en caractères gras.
' L'exemple présent montre les boutons en alignmement horizontal, au-dessus des ' pages d'onglet. De la même manière, on pourrait les placer veticalement, en ' deux pu plusieurs lignes ou colonnes, en-dessous, à gauche ou à droite des ' pages d'onglet. Seul contrainte: tout les containers représentant les pages ' d'onglet doivent avoir des dimensions et un positionnement identiques.
label montrer_onglet, cacher_onglet, click_onglet label container_existe, creer label creer_boutons, supprimer_boutons
dim i%, b% dim onglet_top%, onglet_left%, onglet_height%, onglet_width% dim onglet_n%, onglet_bwidth%, onglet_actif%
width 0,1100 : height 0,600
' paramètres fixes onglet_top% = 100 : ' position verticale onglet_left% = 10 : ' position horizontale onglet_height% = 300 : ' hauteur des onglets onglet_bwidth% = 100 : ' largeur des boutons d'onglet
alpha 1 : top 1,15 : left 1,10 : caption 1,"Nombre d'onglets:" edit 2 : top 2,10 : left 2,100 : width 2,20 : text 2,4
alpha 3 : top 3,15 : left 3,150 : caption 3,"Largeur des onglets:" edit 4 : top 4,10 : left 4,250 : width 4,40 : text 4,300
button 20 : top 20,40 : left 20,10 : caption 20,"Créer les onglets" width 20,150 : on_click 20,creer
end
' ------------- routines des service
' création d'une nouvelle série d'onglets creer: i% = val(text$(2)) if i%<1 or i%>10 i% = message_error_ok("Le nombre d'onglets et en-dehors des limites !") return end_if onglet_width% = val(text$(4)) gosub supprimer_boutons onglet_n% = val(text$(2)) gosub creer_boutons
' pages d'onglet for i%=1 to onglet_n% b% = i% + 200 on_error_goto container_existe : container b% : off_error_goto container_existe: hide b% : top b%,onglet_top%+25 : left b%,onglet_left% width b%,onglet_width% : height b%,onglet_height% caption b%,"Onglet "+str$(i%) next i%
onglet_actif% = 1 gosub montrer_onglet return
' créer les boutons d'onglet creer_boutons: for i%=1 to onglet_n% b% = i% + 100 button b% : top b%,onglet_top% : left b%,(i%-1)*onglet_bwidth%+onglet_left% width b%,onglet_bwidth% : font_bold_off b% : on_click b%,click_onglet caption b%,"Onglet "+str$(i%) next i% return
' supprimer les boutons d'onglet existants supprimer_boutons: if onglet_n%=0 then return for i%=1 to onglet_n% delete i%+100 next i% return
' afficher l'onglet cliqué montrer_onglet: font_bold onglet_actif% + 100 show onglet_actif% + 200 return
' cacher l'ancien onglet cacher_onglet: font_bold_off onglet_actif%+100 hide onglet_actif%+200 return
' on a cliqué sur un onglet click_onglet: for i%=1 to onglet_n% if clicked(i%+100)=1 gosub cacher_onglet onglet_actif% = i% gosub montrer_onglet end_if next i% return
| |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Exemple de gestion des onglets en Panoramic pur Lun 28 Mar 2011 - 15:56 | |
| Très intéressant, bravo Klaus ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Exemple de gestion des onglets en Panoramic pur Lun 28 Mar 2011 - 18:26 | |
| On peut même placer ces boutons et containers dans un seul container général, et on peut alors placer l'ensemble du système facilement, avec TOP et LEFT pour le container général, on peut l'activer ou désactiver, le cacher ou le montrer, comme s'il s'agissait d'un seul objet ! | |
| | | 659_minifly
Nombre de messages : 590 Age : 75 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Exemple de gestion des onglets en Panoramic pur Lun 28 Mar 2011 - 18:57 | |
| bravo j'adopte | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Exemple de gestion des onglets en Panoramic pur Lun 9 Mai 2011 - 0:57 | |
| Bon, j'ai commencé une autre appli Panoramic dont le but sera de placer des sprites sur une image et une fois l'image satisfaisant d'enregistrer le code panoramic ou l'image. J'ai donc repris le principe des onglet de cet exemple. Pour le moment (C'est loin d'être fini, ça donne ça ) J'espère qu'une réponse sur un message de Klaus le refera revenir. Il a tellement de bonnes idées à exploiter ^^ - Code:
-
' _____________________________________________________________ ' * Createur d image ou de code à partir de sprites * ' _____________________________________________________________ ' * * ' * ordre de l entete du programme * ' _____________________________________________________________ ' * - liste des LABEL personnelles * ' * - liste des constantes (ce sont des variables car les * ' * constantes n existent pas dans PANORAMIC) * ' * + commandes DIM pour les "constantes" du programme * ' * + initialisation des valeurs des "constantes" * ' * - liste des DIM pour déclarer les variables * ' * - initialisations (interface graphique, variables, ...) * ' * - liste des routines évènements * ' * - liste des sous-programmes internes * ' _____________________________________________________________
dim chemin$,NbmaxS% dim largeur_f%, hauteur_f%, hauteur_b%, decalage%, NblisteSprite%, NColonne%, NbOnglets% largeur_f% = screen_x: hauteur_f%=screen_y: hauteur_b% = 17 : decalage%=10 : NblisteSprite% = 35: NColonne% = 2 NbOnglets% = 5 chemin$ = "C:\Program Files\Panoramic Editor V 0.9.20\sources\Createur_image_ou_code_depuis_sprites\" NbMaxS%=NColonne%*NblisteSprite%
dim retour%,Coord$,pCoord, l_onglet$(NbOnglets%), N_b_onglet%,N_onglet%,Onglet_actif% dim i%,j%, N_menu%, N_objet%, N_liste_sprite%(NColonne%), N_info_sprite%(NColonne%), N_open%, N_save%, N_Timer%, N_Fenetre% dim S_nom$(NbMaxS%), S_num%(NbMaxS%), pos_y%, pos_x%, hauteur%, largeur%, lInfo% dim N_B_Supprimer%, S$, onglet_width%
label Fin,RecupCoord, clic_Supprimer, Afficher_B_onglets, montrer_onglet, cacher_onglet, click_onglet
width 0,largeur_f% : height 0,hauteur_f%:' Initialisation de la fenêtre principale Coord$=string$(11," "): pCoord=adr(Coord$) : ' Initialisation de la gestion de la souris dll_on chemin$+"GetMouse.dll" : ' Chargement de la dll pour la souris N_objet%=1 : ' Initialisation du nombre d objets utilisés
' Création de l'ecran de gestion des sprites
pos_y% = decalage%: onglet_width%=120 l_onglet$(1)="Gerer Sprites": l_onglet$(2)="Afficher image": l_onglet$(3)= "Non utilisé":l_onglet$(4)= "Non utilisé": l_onglet$(5)= "Non utilisé" N_b_onglet%=N_objet% gosub Afficher_B_onglets N_Objet%=N_Objet%+NbOnglets% N_Onglet%= N_objet% for i%=0 to NbOnglets%-1 container N_Onglet%+i% hide N_Onglet%+i% : top N_Onglet%+i%, 2*decalage%+hauteur_b% : left N_Onglet%+i%,decalage% width N_Onglet%+i%, largeur_f%-2*decalage% height N_Onglet%+i%, hauteur_f% - 90 caption N_Onglet%+i%,l_onglet$(i%+1) next i% N_Objet%=N_Objet%+NbOnglets%
largeur%= decalage% + 5*(len("Texte resprésentant le Sprite n°")+3): ' largeur du container contenant la liste des sprites lInfo% = decalage% + 5*(len("N°99 X:000 Y:000 Scale:2.0 Inutilisé")): ' largeur du container contenant les infos sur les sprites
for j%=0 to (NColonne% -1) N_liste_sprite%(j%+1)=N_objet%: pos_y%= 2*decalage% : hauteur% = 3*decalage% + NblisteSprite%*hauteur_b% container N_liste_sprite%(j%+1): parent N_liste_sprite%(j%+1),N_Onglet%:top N_liste_sprite%(j%+1),pos_y% left N_liste_sprite%(j%+1), (8*j%+1) * decalage% + j%*(largeur%+lInfo%) height N_liste_sprite%(j%+1), hauteur% : width N_liste_sprite%(j%+1), largeur% + 2*decalage% caption N_liste_sprite%(j%+1),"Liste des sprites" : N_objet%=N_objet%+1 ' exemple d_option cochable => option N_objet% : parent N_objet%,N_liste_sprite%(j%+1) : top N_objet%,pos_y% : left N_objet%,decalage% : caption N_objet%,"Option selectionnable": N_objet%=N_objet%+1: pos_y%=pos_y%+hauteur_b% ' exemple de zone de saisie avec etiquette: ' etiquette => alpha N_objet% : parent N_objet%,N_liste_sprite%(j%+1) : top N_objet%,pos_y% : left N_objet%,decalage% : caption N_objet%,"Autre:": N_objet%=N_objet%+1 ' champ editable => edit N_objet% : parent N_objet%,N_liste_sprite%(j%+1) : top N_objet%,pos_y% : left N_objet%,decalage%+40: N_objet%=N_objet%+1: pos_y%=pos_y%+hauteur_b% pos_y%= 2*decalage% For i% = 1 to NblisteSprite% check N_objet% : parent N_objet%,N_liste_sprite%(j%+1) : top N_objet%,pos_y% : left N_objet%,decalage% : height N_objet%, hauteur_b%:width N_objet%, largeur%: caption N_objet%,"Texte resprésentant le Sprite n°"+str$(i%+j%*NblisteSprite%): N_objet%=N_objet%+1: pos_y%=pos_y%+hauteur_b% Next i%
N_info_sprite%(j%+1)=N_objet%: pos_y%= 2*decalage% : hauteur% = 3*decalage% + NblisteSprite%*hauteur_b% - 2 container N_info_sprite%(j%+1): parent N_info_sprite%(j%+1),N_Onglet%: top N_info_sprite%(j%+1),pos_y%: on_click N_info_sprite%(j%+1),RecupCoord left N_info_sprite%(j%+1),decalage%+j%*(5*decalage%+lInfo%)+(j%+1)*(largeur%+3*decalage%): height N_info_sprite%(j%+1), hauteur% width N_info_sprite%(j%+1), lInfo%+2*decalage%: caption N_info_sprite%(j%+1),"Info sur les sprites" : N_objet%=N_objet%+1 pos_y%= 2*decalage% For i% = 1 to NblisteSprite% alpha N_objet% : parent N_objet%,N_info_sprite%(j%+1) : top N_objet%,pos_y% : left N_objet%,decalage% : height N_objet%, hauteur_b% width N_objet%, lInfo%: caption N_objet%,"N°"+right$("00"+str$(j%*NblisteSprite% + i%),2)+" X:000 Y:000 Scale:2.0 Inutilisé" N_objet%=N_objet%+1: pos_y%=pos_y%+hauteur_b% Next i% next j%
pos_y%=pos_y%+int(3.5*decalage%): pos_x%=decalage% button N_objet%: N_B_Supprimer% = N_objet%:parent N_B_Supprimer%,N_Onglet%:S$="Supprimer sprite(s)":top N_objet%,pos_y%: left N_objet%, pos_x%: height N_objet%, hauteur_b% width N_objet%, decalage%+5*len(S$): caption N_objet%,S$ : N_objet%=N_objet%+1: pos_x%=pos_x%+decalage%+decalage%+5*len(S$)
Onglet_actif% = 0 gosub montrer_onglet
' traitement des événements on_close 0,Fin: on_click 0,RecupCoord : on_key_down 0,RecupCoord
for j%=0 to (NColonne% -1) on_click N_liste_sprite%(j%+1),RecupCoord For i% = 1 to NblisteSprite% on_click N_liste_sprite%(j%+1)+i%, RecupCoord on_click N_info_sprite%(j%+1)+i%, RecupCoord Next i% next j%
for i%= 0 to NbOnglets%-1 on_click N_B_onglet%+i%,click_onglet next i%
on_click N_B_Supprimer%,clic_Supprimer
REM TIMER N_objet%: TIMER_INTERVAL N_objet%,100: ON_TIMER N_objet%,RecupCoord: N_objet%=N_objet%+1 : ' Declaration du timer pour récupérer les information de la souris
END
' Récupération de l etat de la souris (coordonnées et état du clic) RecupCoord: retour%=dll_call1("GetMouseXY",pCoord) Coord$=left$(Coord$,len(Rtrim$(Coord$))-1) Coord$=Right$(Coord$,len(Coord$)-1) caption 0,"Position de la souris: "+Coord$+" - Etat du clic: "+str$(retour%) Coord$=string$(10," ") return
' afficher les boutons des onglets Afficher_B_onglets: for i%=0 to NbOnglets%-1 button N_b_onglet%+i% : top N_b_onglet%+i%,pos_y%: left N_b_onglet%+i%,i%*onglet_width%+(i%+1)*decalage% width N_b_onglet%+i%,onglet_width%: font_bold_off N_b_onglet%+i% : caption N_b_onglet%+i%,l_onglet$(i%+1) next i% return
' afficher l'onglet cliqué montrer_onglet: font_bold onglet_actif% + N_b_onglet% show onglet_actif% + N_onglet% return
' cacher l'ancien onglet cacher_onglet: font_bold_off onglet_actif%+ N_b_onglet% hide onglet_actif%+ N_onglet% return
' on a cliqué sur un onglet click_onglet: for i%=0 to NbOnglets%-1 if clicked(i%+N_b_onglet%)=1 gosub cacher_onglet onglet_actif% = i% gosub montrer_onglet end_if next i% return
' Traite le bouton Supprimer de l'onglet 0 clic_Supprimer:
return
' Sortie du programme fin: dll_off : ' Déchargement des dll terminate :' On libère les ressources return
| |
| | | Contenu sponsorisé
| Sujet: Re: Exemple de gestion des onglets en Panoramic pur | |
| |
| | | | Exemple de gestion des onglets en Panoramic pur | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |