bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: SUB centrer objet à partir d'1 form divisé en lig. et col. Mer 16 Oct 2013 - 19:40 | |
| Bonsoir à tous J'ai repris ma sub de partage d'un form en lignes et colones et j'ai un peu complexifié ma formule de calcul de manière à pouvoir centrer dans une zone précise un objet. J'ai mis sur le web dav à Ygeronimi dans le dossier procédure. Ici le programme d'essai qui contient la sub partage(C,L) que j'ai publié hier, mais qui ne sert que juste pour montrer de visu la manière dont viennent se positionner les objets, ce qui aide à comprendre le fonctionnement de la sub centre(obj$,C,L,COBJ,LOBJ,WOBJ,HOBJ,capt$). - Code:
-
label fin width 0,1300:height 0,700
picture number_objects+1 full_space number_objects color number_objects,240,240,180 2d_target_is number_objects 2d_pen_color 0,0,0:partage(9,11) 2d_pen_color 250,0,0:partage(2,2)
' ============================================================================== ' ============================================================================== ' Dans ces exemples d'objet, C et L font 9 et 11 pour le button et l'alpha ' le form est donc divisé en 9 colones et 11 lignes (voir le quadrillage de ' lignes noires), et l'on centre le button dans la cellule de coordonnées 5 x 6 ' soit 5ème colone et 6ème ligne: bouton "QUITTER" ' L'alpha quant à lui est aux coordonnées 2 x 2 (2ème colone, 2ème ligne) ' pour les check on a imaginé séparer le form en 18 colones et 22 lignes ' pour les option le form est séparé en 9 colones et 33 lignes ' pour le container, le form est partitionné en 4 (2x2) (voir les lignes rouges) ' etc... ' ============================================================================== ' ============================================================================== centre("button",9,11,5,6,90,30,"QUITTER"):on_click number_objects,fin centre("alpha",9,11,2,2,75,17,"BONJOUR!") centre("check",18,22,5,9,55,17,"Afficher") centre("check",18,22,5,10,55,17,"Trier") centre("option",9,33,8,4,75,17,"Rouge") centre("option",9,33,8,5,75,17,"Vert") centre("option",9,33,8,6,75,17,"Bleu") centre("container",2,2,2,2,400,200," Informations ") centre("edit",9,8,3,6,100,30,"Évènement") centre("memo",15,11,8,1,100,60,"Je suis un memo") end
' ============================================================================== ' ============================================================================== ' DONC SI VOUS AVEZ BIEN SAISI LE FONCTIONNEMENT ' DE LA SUB centre(obj$,C,L,COBJ,LOBJ,WOBJ,HOBJ,capt$) ' LA SUB SUIVANTE: partage(C,L) ainsi que les lignes 8 et 9 ne servent à rien!!! ' ELLES SONT LÀ POUR ILLUSTRER ET COMPRENDRE LA SUB centre(obj$,...) sub partage(C,L) dim_local i,j while i<c 2d_line ((width(0)-16)/C)+j,0,((width(0)-16)/C)+j,height(0) j=j+(width(0)-16)/C:i=i+1 end_while i=0:j=0 while i<L 2d_line 0,((height(0)-38)/L)+j,width(0),((height(0)-38)/L)+j j=j+(height(0)-38)/L:i=i+1 end_while end_sub ' ============================================================================== ' ==============================================================================
sub centre(obj$,C,L,COBJ,LOBJ,WOBJ,HOBJ,capt$) dim_local xobj,yobj if obj$="button" then button number_objects+1 if obj$="alpha" then alpha number_objects+1 if obj$="check" then check number_objects+1 if obj$="option" then option number_objects+1 if obj$="container" then container number_objects+1 if obj$="edit" then edit number_objects+1:text number_objects,capt$ if obj$="memo" then memo number_objects+1:item_add number_objects,capt$ width number_objects,WOBJ height number_objects,HOBJ xobj=((width(0)-16)/C)*(COBJ-1)+((width(0)-16)/(C*2))-(width(number_objects)/2) yobj=((height(0)-38)/L)*(LOBJ-1)+((height(0)-38)/(L*2))-(height(number_objects)/2) left number_objects,xobj top number_objects,yobj if obj$<>"edit" and obj$<>"memo" then caption number_objects,capt$ end_sub
fin: terminate Ici, je met la version allégée, sans la sub partage(C,L) - Code:
-
label fin width 0,1300:height 0,700
picture number_objects+1 full_space number_objects color number_objects,240,240,180
' ============================================================================== ' ============================================================================== ' Dans ces exemples d'objet, C et L font 9 et 11 pour le button et l'alpha ' le form est donc divisé en 9 colones et 11 lignes (voir le quadrillage de ' lignes noires), et l'on centre le button dans la cellule de coordonnées 5 x 6 ' soit 5ème colone et 6ème ligne: bouton "QUITTER" ' L'alpha quant à lui est aux coordonnées 2 x 2 (2ème colone, 2ème ligne) ' pour les check on a imaginé séparer le form en 18 colones et 22 lignes ' pour les option le form est séparé en 9 colones et 33 lignes ' pour le container, le form est partitionné en 4 (2x2) (voir les lignes rouges) ' etc... ' ============================================================================== ' ============================================================================== centre("button",9,11,5,6,90,30,"QUITTER"):on_click number_objects,fin centre("alpha",9,11,2,2,75,17,"BONJOUR!") centre("check",18,22,5,9,55,17,"Afficher") centre("check",18,22,5,10,55,17,"Trier") centre("option",9,33,8,4,75,17,"Rouge") centre("option",9,33,8,5,75,17,"Vert") centre("option",9,33,8,6,75,17,"Bleu") centre("container",2,2,2,2,400,200," Informations ") centre("edit",9,8,3,6,100,30,"Évènement") centre("memo",15,11,8,1,100,60,"Je suis un memo") end
sub centre(obj$,C,L,COBJ,LOBJ,WOBJ,HOBJ,capt$) dim_local xobj,yobj if obj$="button" then button number_objects+1 if obj$="alpha" then alpha number_objects+1 if obj$="check" then check number_objects+1 if obj$="option" then option number_objects+1 if obj$="container" then container number_objects+1 if obj$="edit" then edit number_objects+1:text number_objects,capt$ if obj$="memo" then memo number_objects+1:item_add number_objects,capt$ width number_objects,WOBJ height number_objects,HOBJ xobj=((width(0)-16)/C)*(COBJ-1)+((width(0)-16)/(C*2))-(width(number_objects)/2) yobj=((height(0)-38)/L)*(LOBJ-1)+((height(0)-38)/(L*2))-(height(number_objects)/2) left number_objects,xobj top number_objects,yobj if obj$<>"edit" and obj$<>"memo" then caption number_objects,capt$ end_sub
fin: terminate A+ | |
|