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 |
|
|
| Create_Object | |
| | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Create_Object Mer 20 Mar 2013 - 21:34 | |
| Bonsoir à tous et en particulier à Ygeronimi, En regardant le code de ton jeu "Scrabble...." j'ai été séduit par ta façon de créer l'interface. J'ai donc repris ton idée pour la faire à ma sauce et adapté à la méthode de repérage des numéros d'objet par un nom%. Cette version ne traite pas toutes les commandes (EX: ON_CLICK) mais elle traite tous les objets Panoramic, sauf MAIN_MENU et SUB_MENU. Prenez le temps de lire les commentaires qui contiennent des infos importantes. Un seul code qui se divise en trois partie; l'aide, une interface d'exemple avec tous les objets et Les procédures nécessaires (pour #INCLUDE). - Code:
-
' Create_Object par Jean Claude sur inspiration de Objet.lib de Ygeronimi error_french
' les dim et label ci-dessous sont à insérer dans le programme au sub Dim_Label() dim n%:label clear_0 dim no%:no%=9:' réserve les numéros d'objet de 1 à 8 pour Form 0 ou autre besoin ' attention le N°2 est necéssaire pout utiliser la procédure (il est libéré en sortie) dim clic%,chang%:label Clic,objet_Click,change,objet_change:' pour le traitement des clics et des on_change ' valeurs retournés par le clic ou on_change dim lig_sel%,item_sel$,txt$,txt_lig$,cap$,papa$,Xcount%,mini%,maxi%,pos%,typ% dim grid_lig_sel%,grid_col_sel%,grid_cel_txt$,etat_clic%,etat_check%
' pour la démo label visu_resultat_clic,visu_resultat_memo,visu_resultat_change dim tour% height 0,screen_y:width 0,410 memo 3:full_space 3:font_name 3,"DejaVu Sans Mono" caption 0,str$(number_objects)+" Objets"
Interface()
END
Clic: ' ici définir l'action (branchement) du clic avec son nom if clic%=BT_quit% then gosub clear_0 if clic%=alpha_1% then gosub visu_resultat_clic if clic%=ABT_valid% then gosub visu_resultat_clic if clic%=list_1% then gosub visu_resultat_clic if clic%=edit_1% then gosub visu_resultat_clic if clic%=combo_1% then gosub visu_resultat_clic if clic%=check_1% or clic%=option_1% or clic%=option_2% then gosub visu_resultat_clic if clic%=picture_1% or clic%=movie_1% then gosub visu_resultat_clic if clic%=memo_1% then gosub visu_resultat_memo if clic%=Form_principal% or clic%=0 then gosub visu_resultat_clic if clic%=container_option_1% or clic%=container_1% then gosub visu_resultat_clic return
change: tour%=tour%+1:' pour éviter de remplir Form 0 au démarrage if tour%>4 then gosub visu_resultat_change return
visu_resultat_clic: ' item_add 3,"" item_add 3, " EVENEMENT ON_CLICK" item_add 3, "Numéro objet_cliqué / Type /Parent => "+str$(clic%)+" / "+str$(typ%)+" / "+papa$ item_add 3, "Etat CLICKED de l'objet => "+str$(etat_clic%) item_add 3, "Etat CHECKED de l'objet (OPTION/CHECK) => "+str$(etat_check%) item_add 3, "Caption($) de lobjet => "+cap$ item_add 3, "Contenu de l'objet (EDIT/COMBO) => "+txt$ item_add 3, "Numéro ligne sélectionnée (LIST/COMBO) => "+str$(lig_sel%) item_add 3, "item($) ligne sélectionnée (LIST/COMBO) => "+item_sel$:' ce résultat est obtenu par item_index$ item_add 3, "texte ligne sélectionnée (LIST/COMBO) => "+txt_lig$:' ce résultat est obtenu par item_read$(lig_sel%) item_add 3, "Count (nombtre de ligne ou d'article) => "+str$(Xcount%) item_add 3, "ligne sélectionnée (GRID) => "+str$(grid_lig_sel%) item_add 3, "Colonne sélectionnée (GRID) => "+str$(grid_col_sel%) item_add 3, "item($) cellule sélectionnée (GRID) => "+grid_cel_txt$ item_add 3,"" ' Clear_Variable_Objet() return
visu_resultat_memo: ' item_add 3,"" item_add 3, " EVENEMENT ON_CLICK" item_add 3, "MEMO" item_add 3, "Numéro d'objet cliqué / Type / Parent => "+str$(clic%)+" / "+str$(typ%)+" / "+papa$ item_add 3, "Etat CLICKED de l'objet => "+str$(etat_clic%) item_add 3, "texte de la première ligne => "+txt_lig$:' ce résultat est obtenu par item_read$(1) item_add 3, "Count (nombtre de ligne ou d'article) => "+str$(Xcount%) item_add 3,"" ' Clear_Variable_Objet() return
visu_resultat_change: ' item_add 3, "" item_add 3, " EVENEMENT ON_CHANGE" item_add 3, "N° objet changé / Type / Parent => "+str$(chang%)+" / "+str$(typ%)+" / "+papa$ item_add 3, "Etat CLICKED de l'objet => "+str$(etat_clic%) item_add 3, "Contenu de l'objet (EDIT/COMBO) => "+txt$ item_add 3, "Numéro ligne sélectionnée (MEMO/COMBO) => "+str$(lig_sel%) item_add 3, "item($) ligne sélectionnée (MEMO/COMBO) => "+item_sel$:' ce résultat est obtenu par item_index$ item_add 3, "texte ligne sélectionnée (MEMO/COMBO) => "+txt_lig$:' ce résultat est obtenu par item_read$(lig_sel%) item_add 3, "Count (nombtre de ligne ou d'article) => "+str$(Xcount%) item_add 3, "Etat de POSITION (BAR) => "+str$(pos%) item_add 3,"" ' Clear_Variable_Objet() return
clear_0: clear 3:' to_foreground Form_principal% return
' =================== EXEMPLE DE CREATION D'INTERFACE ========================== Sub Interface() dim_local Xobjet$,Xparent%,Xwidth%,Xheight%,Xtop%,Xleft%,Xcaption$,Xhint$,cr%,cv%,cb%,fcr%,fcv%,fcb%,Xcursor$
' Création de la Fenêtre Principale no%=no%+1:dim Form_principal%:Form_principal%=no% Xobjet$="form":Xparent%=-1:Xcaption$="Fenêtre Principale":Xhint$="":Xcursor$="O" Xwidth%=870:Xheight%=500:Xtop%=screen_y-(Xheight%+10):Xleft%=screen_x-Xwidth%:cr%=170:cv%=220:cb%=255:fcr%=0:fcv%=0:fcb%=0 Create_Object(Xobjet$,Xparent%,Xwidth%,Xheight%,Xtop%,Xleft%,Xcaption$,Xhint$,cr%,cv%,cb%,fcr%,fcv%,fcb%,Xcursor$) border_small no%
' Exemple de création d'un ALPHA et sa Police no%=no%+1:dim alpha_1%:alpha_1%=no% Xobjet$="alpha":Xparent%=Form_principal%:Xwidth%=200:Xheight%=20:Xtop%=10:Xleft%=10 Xcaption$="ALPHA":Xhint$="alpha_1%":cr%=170:cv%=220:cb%=255:fcr%=255:fcv%=0:fcb%=255:Xcursor$="O" Create_Object(Xobjet$,Xparent%,Xwidth%,Xheight%,Xtop%,Xleft%,Xcaption$,Xhint$,cr%,cv%,cb%,fcr%,fcv%,fcb%,Xcursor$)
' Exemple de gestion de la police d'un objet ' La SUB Police_objet(police$,taille%,gra$,italic$,raye$,souligne$) Police_objet("Arial",12,"O","O","O","O")
' pour les objets qui suivent j'ai choisi de ne pas utiliser la totalité des variables ' j'en ai entré un certain nombre directement dans l'appel de la procédure no%=no%+1:dim BT_quit%:BT_quit%=no% Xobjet$="button":Xparent%=Form_principal%:Xcaption$="Clear_Form_0":Xhint$="Quitter le programme":Xcursor$="O" Create_Object(Xobjet$,Xparent%,100,20,40,10,Xcaption$,Xhint$,170,200,255,0,0,255,Xcursor$)
no%=no%+1:dim check_1%:check_1%=no% Xobjet$="check":Xparent%=Form_principal%:Xcaption$="CASE à COCHER":Xhint$="check_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,200,20,70,10,Xcaption$,Xhint$,170,220,255,255,0,255,Xcursor$) Police_objet("Arial",10,"O","O","","O")
no%=no%+1:dim combo_1%:combo_1%=no% Xobjet$="combo":Xparent%=Form_principal%:Xcaption$="":Xhint$="combo_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,200,20,100,10,Xcaption$,Xhint$,190,240,255,50,0,255,Xcursor$) Police_objet("Arial",10,"O","O","","") item_add no%,"Choix 1":item_add no%,"Choix 2":item_add no%,"Choix 3"
no%=no%+1:dim edit_1%:edit_1%=no% Xobjet$="edit":Xparent%=Form_principal%:Xcaption$="":Xhint$="edit_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,200,20,130,10,Xcaption$,Xhint$,190,240,255,255,0,255,Xcursor$) Police_objet("Arial",10,"O","O","","") text no%,"edit"
no%=no%+1:dim list_1%:list_1%=no% Xobjet$="list":Xparent%=Form_principal%:Xcaption$="":Xhint$="list_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,50,50,10,250,Xcaption$,Xhint$,200,250,255,0,0,155,Xcursor$) Police_objet("Arial",10,"O","","","") item_add list_1%,"Liste":item_add list_1%,"item_2"
no%=no%+1:dim memo_1%:memo_1%=no% Xobjet$="memo":Xparent%=Form_principal%:Xcaption$="":Xhint$="memo_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,50,50,70,250,Xcaption$,Xhint$,230,255,255,0,0,155,Xcursor$) Police_objet("Arial",10,"","O","","") item_add memo_1%,"Memo"
no%=no%+1:dim picture_1%:picture_1%=no% Xobjet$="picture":Xparent%=Form_principal%:Xcaption$="":Xhint$="picture_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,50,50,130,250,Xcaption$,Xhint$,255,255,255,0,0,155,Xcursor$)
no%=no%+1:dim movie_1%:movie_1%=no% Xobjet$="movie":Xparent%=Form_principal%:Xcaption$="":Xhint$="movie_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,50,50,190,250,Xcaption$,Xhint$,0,0,0,0,0,0,Xcursor$) Police_objet("Arial",10,"","O","",""):' ne s'applique pas à MOVIE mais l'erreur est traitée
no%=no%+1:dim container_1%:container_1%=no% Xobjet$="container":Xparent%=Form_principal%:Xcaption$=" CONTAINER ":Xhint$="container_1%":Xcursor$="" Create_Object(Xobjet$,Xparent%,120,140,170,10,Xcaption$,Xhint$,170,220,255,0,50,255,Xcursor$) Police_objet("Arial",10,"","O","","")
no%=no%+1:dim progress_bar_1%:progress_bar_1%=no% Xobjet$="progress_bar":Xparent%=container_1%:Xcaption$="":Xhint$="progress_bar_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,100,10,30,10,Xcaption$,Xhint$,0,0,0,0,0,0,Xcursor$) max progress_bar_1%,100:position progress_bar_1%,50
no%=no%+1:dim scroll_bar_1%:scroll_bar_1%=no% Xobjet$="scroll_bar":Xparent%=container_1%:Xcaption$="":Xhint$="scroll_bar_1%":Xcursor$="" Create_Object(Xobjet$,Xparent%,100,10,60,10,Xcaption$,Xhint$,0,0,0,0,0,0,Xcursor$) max scroll_bar_1%,100:position scroll_bar_1%,50
no%=no%+1:dim track_bar_1%:track_bar_1%=no% Xobjet$="track_bar":Xparent%=container_1%:Xcaption$="":Xhint$="track_bar_1%":Xcursor$="" Create_Object(Xobjet$,Xparent%,100,30,90,10,Xcaption$,Xhint$,0,0,0,0,0,0,Xcursor$) max track_bar_1%,100:position track_bar_1%,50
no%=no%+1:dim Dlist_trav1%:Dlist_trav1%=no% Xobjet$="dlist":Xcaption$="":Xhint$="":Xcursor$="" Create_Object(Xobjet$,Xparent%,0,0,0,0,Xcaption$,Xhint$,0,0,0,0,0,0,Xcursor$)
no%=no%+1:dim container_option_1%:container_option_1%=no% Xobjet$="container_option":Xparent%=Form_principal%:Xcursor$="" Xcaption$=" Container Option ":Xhint$="container_option_1%" Create_Object(Xobjet$,Xparent%,120,100,330,10,Xcaption$,Xhint$,170,220,255,0,50,255,Xcursor$) Police_objet("Monotype Corsiva",10,"O","","","O")
no%=no%+1:dim option_1%:option_1%=no% Xobjet$="option":Xparent%=container_option_1%:Xcaption$="Choix 1":Xhint$="option_1%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,100,20,30,10,Xcaption$,Xhint$,170,220,255,255,0,255,Xcursor$) Police_objet("Arial",10,"","","","")
no%=no%+1:dim option_2%:option_2%=no% Xobjet$="option":Xparent%=container_option_1%:Xcaption$="Choix 2":Xhint$="option_2%":Xcursor$="O" Create_Object(Xobjet$,Xparent%,100,20,60,10,Xcaption$,Xhint$,170,220,255,255,0,255,Xcursor$) Police_objet("Elephant",10,"","","","O")
' Exemple de création d'un GRID no%=no%+1:dim grid_1%:grid_1%=no% Xobjet$="grid":Xparent%=Form_principal%:Xcaption$="":Xhint$="grid_1%":Xcursor$="" Create_Object(Xobjet$,Xparent%,523,293,60,330,Xcaption$,Xhint$,200,240,255,0,0,255,Xcursor$) Police_objet("Arial",10,"","","","") ' Compl_Grid(nb_col%,nb_lig%,nb_col_fixe%,nb_lig_fixe%,BW_col$,BH_lig$,lig_height%,col_width%,cfr%,cfv%,cfb%) Compl_Grid(8,17,1,1,"A","A",16,64,150,200,255) for n%=2 to 8:grid_write grid_1%,1,n%," Colonne: "+str$(n%-1):next n% for n%=2 to 17:grid_write grid_1%,n%,1," Ligne: "+str$(n%-1):next n% grid_write grid_1%,2,2,"lig: 1 / col: 1":grid_write grid_1%,2,3,"lig: 1 / col: 2"
' Exemple de création d'un ALPHA_BUTTON no%=no%+1:dim ABT_valid%:ABT_valid%=no% Xobjet$="alpha_button":Xparent%=Form_principal%:Xwidth%=200:Xheight%=20:Xtop%=8:Xleft%=80 Xcaption$="":Xhint$="alpha_bouton%":cr%=170:cv%=220:cb%=255:fcr%=55:fcv%=100:fcb%=255:Xcursor$="O" Create_Object(Xobjet$,Xparent%,Xwidth%,Xheight%,Xtop%,Xleft%,Xcaption$,Xhint$,cr%,cv%,cb%,fcr%,fcv%,fcb%,Xcursor$) Transforme_Alpha_Button("Wingdings",18,"O",67)
' SPIN ' main_menu , sub_menu
End_Sub
' ========================= REGLAGE Clic sur ALPHA_BUTTON ====================== objet_Click: ' gestion couleur Alpha_bouton après click if number_click=ABT_valid% then Anim_Alpha_bouton(55,100,255) ' .... ' .... ' .... ' ne rien changer ci-dessous Ctrl_Clic(number_click) gosub Clic return
objet_change: Ctrl_change(number_change) gosub change return ' ============================================================================== ' LES PROCEDURES NECESSAIRES (par #include si vous le souhaitez) ' ------------------------------------------------------------------------------ Sub Clear_Variable_Objet() lig_sel%=-1:item_sel$="Non traité":txt$="Non traité":txt_lig$="Non traité" cap$="Non traité":papa$="Non traité":Xcount%=-1:pos%=-1:typ%=-1 grid_lig_sel%=-1:grid_col_sel%=-1:grid_cel_txt$="Non traité":etat_clic%=-1:etat_check%=-1 End_Sub ' ---------------------- Sub Ctrl_change(num_ob%) Clear_Variable_Objet() ' traitement de on_change suivant type d'objet dim_local ty% ty%=object_type(num_ob%):typ%=ty% chang%=num_ob% ' edit if ty%=3 chang%=num_ob%:etat_clic%=clicked(chang%):txt$=text$(chang%) papa$=object_parent(chang%):Exit_Sub end_if ' memo if ty%=4 chang%=num_ob%:etat_clic%=clicked(chang%):papa$=object_parent(chang%) Xcount%=count(chang%) txt_lig$=item_read$(chang%,1) Exit_Sub end_if ' les bar(s) if ty%=16 or ty%=19 chang%=num_ob%:papa$=object_parent(chang%) pos%=position(chang%) Exit_Sub end_if ' combo if ty%=5 chang%=num_ob%:etat_clic%=clicked(chang%):papa$=object_parent(chang%) txt$=text$(chang%):lig_sel%=item_index(chang%):item_sel$=item_index$(chang%) if lig_sel%<1 then Exit_Sub txt_lig$=item_read$(chang%,lig_sel%):Exit_Sub end_if End_Sub message "Ce type d'objet "+str$(to%)+" n'est pas traité à la sub Ctrl_change" End_Sub ' ------------------------------------------------------------------------------ Sub Ctrl_Clic(num_obj%) ' traitement du clic suivant type d'objet dim_local to% to%=object_type(num_obj%):typ%=to% ' button if to%=2 clic%=num_obj%:etat_clic%=clicked(clic%) cap$=caption$(clic%):papa$=object_parent(clic%) Exit_Sub end_if ' alpha et alpha_button if to%=6 clic%=num_obj%:etat_clic%=clicked(clic%):cap$=caption$(clic%) papa$=object_parent(clic%):Exit_Sub end_if ' edit if to%=3 clic%=num_obj%:etat_clic%=clicked(clic%):txt$=text$(clic%) papa$=object_parent(clic%):Exit_Sub end_if ' combo if to%=5 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) txt$=text$(clic%):lig_sel%=item_index(clic%):item_sel$=item_index$(clic%) txt_lig$=item_read$(clic%,lig_sel%):Exit_Sub end_if ' list if to%=8 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) lig_sel%=item_index(clic%):item_sel$=item_index$(clic%) txt_lig$=item_read$(clic%,lig_sel%):Exit_Sub end_if ' check et option if to%=10 or to%=11 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) etat_check%=checked(clic%):cap$=caption$(clic%):Exit_Sub end_if ' picture et memo if to%=9 or to%=4 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) if to%=4 Xcount%=count(clic%) txt_lig$=item_read$(clic%,1) end_if Exit_Sub end_if ' form if to%=7 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) cap$=caption$(clic%) Exit_Sub end_if ' les bar(s) if to%=16 or to%=19 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) mini%=min(clic%):maxi%=max(clic%):pos%=position(clic%) Exit_Sub end_if ' Movie if to%=15 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) Exit_Sub end_if ' Container et container_option if to%=23 or to%=32 clic%=num_obj%:etat_clic%=clicked(clic%):papa$=object_parent(clic%) cap$=caption$(clic%) Exit_Sub end_if
' if to%="grid" message "Cet objet n'est pas traité à la sub Ctrl_clic" End_Sub ' ------------------------------------------------------------------------------ Sub Create_Object(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) dim_local trouv$ trouv$="":' au cas ou l'objet n'est pas géré ' ---- ' GRID if TY$="grid" trouv$="O":grid no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ---- ' CONTAINER_OPTION if TY$="container_option" trouv$="O":container_option no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ---- ' CONTAINER if TY$="container" trouv$="O":container no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ---- ' TRACK_BAR if TY$="track_bar" trouv$="O":track_bar no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_change no%,objet_change end_if ' ---- ' SCROLL_BAR if TY$="scroll_bar" trouv$="O":scroll_bar no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_change no%,objet_change end_if ' ---- ' PROGRESS_BAR if TY$="progress_bar" trouv$="O":progress_bar no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) end_if ' ---- ' MOVIE if TY$="movie" trouv$="O":movie no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) end_if ' ---- ' PICTURE if TY$="picture" trouv$="O":picture no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ---- ' MEMO if TY$="memo" trouv$="O":memo no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click on_change no%,objet_change end_if ' ----- ' EDIT if TY$="edit" trouv$="O":edit no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click on_change no%,objet_change end_if ' ----- ' COMBO if TY$="combo" trouv$="O":combo no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click on_change no%,objet_change end_if ' ----- ' OPTION if TY$="option" trouv$="O":option no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ----- ' CHECK if TY$="check" trouv$="O":check no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ----- ' BUTTON if TY$="button" trouv$="O":button no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ----- ' ALPHA if TY$="alpha" or TY$="alpha_button" trouv$="O":alpha no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ---- ' DLIST if TY$="dlist" trouv$="O":dlist no% end_if ' ---- ' LIST if TY$="list" trouv$="O":list no%:Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) on_click no%,objet_Click end_if ' ---- ' FORM if TY$="form" trouv$="O":form no% command_target_is no% parent_object(P%) width no%,W%:height no%,H% if W%=0 then full_space no% if L%=0 left no%,L% else if L%=1 left no%,int(screen_x/2-(width(no%)/2)) else if L%>1 left no%,L% end_if end_if end_if if T%=0 top no%,T% else if T%=1 top no%,int(screen_y/2-(height(no%)/2)) else if T%>1 top no%,T% end_if end_if end_if caption no%,C$ if H$<>"" then hint no%,H$ Color_Fond_Object(CR%,CG%,CB%) ' Color_Police_Object(PR%,PG%,PB%) on_click no%,objet_Click end_if ' ---- ' SORTIE if trouv$="" then message "Ce type d'objet "+TY$+" n'est pas gérer ou n'existe pas" End_Sub ' ------------------------------------------------------------------------------ Sub Police_objet(police$,taille%,gra$,italic$,raye$,souligne$) if object_type(no%)=15 or object_type(no%)=16 then Exit_Sub if object_type(no%)=19 or object_type(no%)=20 then Exit_Sub if object_type(no%)=26 then Exit_Sub font_name no%,police$:Font_size no%,taille%:if gra$="O" then font_bold no% if italic$="O" then font_italic no%:if raye$="O" then font_strike no% if souligne$="O" then font_underline no% End_Sub ' ------------------------------------------------------------------------------ Sub Transforme_Alpha_Button(police$,taille%,gra$,chr_caption%) font_name no%,police$:Font_size no%,taille%:if gra$="O" then font_bold no% caption no%,chr$(chr_caption%) End_Sub ' ------------------------------------------------------------------------------ Sub Anim_Alpha_bouton(fcr%,fcv%,fcb%) dim_local bouton%,xb%,yb%,to% bouton%=number_click:to%=object_type(bouton%):if to%<>6 or to%=-1 then Exit_sub if active(bouton%)=0 or show(bouton%)=0 or clicked(bouton%)=0 then Exit_Sub xb%=top(bouton%):yb%=left(bouton%):top bouton%,xb%+2:left bouton%,yb%+2:font_color bouton%,50,180,50 wait 300:top bouton%,xb%:left bouton%,yb%:font_color bouton%,fcr%,fcv%,fcb% End_sub ' ------------------------------------------------------------------------------ Sub Compl_Grid(nb_col%,nb_lig%,nb_col_fixe%,nb_lig_fixe%,BW_col$,BH_lig$,lig_height%,col_width%,cfr%,cfv%,cfb%) grid_column no%,nb_col%:grid_row no%,nb_lig%:grid_column_fixed no%,nb_col_fixe% grid_row_fixed no%,nb_lig_fixe%:grid_row_height no%,lig_height% if BW_col$="A" grid_column_sizing_on no% else grid_column_sizing_off no% end_if if BH_lig$="A" grid_row_sizing_on no% else grid_row_sizing_off no% end_if grid_column_width no%,col_width%:grid_fixed_color no%,cfr%,cfv%,cfb% End_Sub ' --------------------------------------- Sub Dimension_et_Position(P%,W%,H%,T%,L%) dim_local wb%,hb%,i% if P%>0 if object_type(P%)=7 command_target_is P% i%=2:memo i%:full_space i% wb%=width(P%)-width(i%):hb%=height(P%)-height(i%):delete i% else wb%=0::hb%=0 end_if end_if width no%,W%:height no%,H% if L%=0 left no%,L% else if L%=1 left no%,int(width(P%)/2-(width(no%)/2))-(wb%/2) else if L%>1 left no%,L% end_if end_if end_if if T%=0 top no%,T% else if T%=1 top no%,int(height(P%)/2-(height(no%)/2))-(hb%/2) else if T%>1 top no%,T% end_if end_if end_if End_Sub ' ------------------- Sub parent_object(P%) if P%=-1 Exit_Sub else parent no%,P% end_if End_Sub ' -------------------------------- Sub Color_Fond_Object(CR%,CG%,CB%) if CR%>=0 and CR%<256 if CG%>=0 and CG%<256 if CB%>=0 and CB%<256 color no%,CR%,CG%,CB% end_if end_if end_if End_Sub ' ---------------------------------- Sub Color_Police_Object(PR%,PG%,PB%) if PR%>=0 and PR%<256 if PG%>=0 and PG%<256 if PB%>=0 and PB%<256 font_color no%,PR%,PG%,PB% end_if end_if end_if End_Sub ' ---------------------------------------------------------------------- Sub Attributs_Base(TY$,P%,W%,H%,T%,L%,C$,H$,CR%,CG%,CB%,PR%,PG%,PB%,XC$) parent_object(P%) Dimension_et_Position(P%,W%,H%,T%,L%) if H$<>"" then hint no%,H$ if TY$="button" caption no%,C$ if XC$="O" then cursor_point no% Exit_Sub end_if if TY$="progress_bar" if XC$="O" then cursor_hourglass no% Exit_Sub end_if if TY$="scroll_bar" then Exit_Sub if TY$="track_bar" then Exit_Sub Color_Fond_Object(CR%,CG%,CB%) if TY$="movie" then Exit_Sub Color_Police_Object(PR%,PG%,PB%) if TY$="grid" then Exit_Sub if TY$="memo" if XC$="O" then cursor_arrow no% Exit_Sub end_if if TY$="picture" if XC$="O" then cursor_arrow no% Exit_Sub end_if if TY$="list" if XC$="O" then cursor_point no% Exit_Sub end_if if TY$="combo" if XC$="O" then cursor_point no% Exit_Sub end_if if TY$="edit" then Exit_Sub if TY$="check" if XC$="O" then cursor_point no% end_if if TY$="option" if XC$="O" then cursor_point no% end_if if TY$="alpha_button" if XC$="O" then cursor_point no% end_if caption no%,C$ End_Sub ' ------------------------------------------------------------------------------
' =================== CREATION DES OBJETS DE L'INTERFACE ======================= ' AIDE ' liste des variables permetant de ne pas avoir une ligne trop longue pour l'appel de la SUB ' Xobjet$,Xparent%,Xwidth%,Xheight%,Xtop%,Xleft%,Xcaption$,Xhint$,cr%,cv%,cb%,fcr%,fcv%,fcb% ' ------------------------------------------------------------------------------ ' Principe: renseigner toutes les variables pour créer un Objet ' 0 ou -1 ou "" suivant les cas pour ne pas renseigner la variable (voir détail) ' (Les variables sont précedées d"un X pour éviter des collisions avec Panoramic) ' ---------------------------------------------------------- ' 1) les attributs dimension, position, titre, info-bulle et curseur: ' description des variables à renseigner pour créer l'objet: ' Xobjet$ = mot-clé Panoramic de l'objet en minuscule (Ex: "button") ' Xparent% = PARENT * Remarque: -1 pour ne pas désigner de parent ' Xwidth% = WIDTH , Xheight% = HEIGHT * Remarque: if Xwidth%=0 then full_space ' Xtop% = TOP * Remarque: 0 pour position en haut , 1 pour position centrée ' Xleft% = LEFT * Remarque: 0 pour position à Gauche , 1 pour position centrée ' 2ème Remarque(TOP/LEFT): si le parent est une FORM la hauteur du bandeau ' et les largeurs du cadre sont prisent en compte par le programme ' Xcaption$ = CAPTION * Remarque: "" si vous ne voulez pas de caption ' Xhint$ = HINT (Info_bulle) * Remarque: "" pour ne pas avoir de hint ' Xcursor$ = choisi le type de CURSOR proposé ("O" pour OUI / "" pour N) ' ' Remarque générale pour les variables ci_dessus: ' si l'objet ne supporte pas une commande et que la variable est tout de ' même renseignée, le programme n'en tient pas compte (Pas d'erreur) ' c'est une prévention contre le copier/coller ' ---------------- ' 2) Les couleurs: ' cr%,cv%,cb% = COLOR de l'objet (rouge,vet,bleu) ' fcr%,fcv%,fcb% = FONT_COLOR de l'objet (rouge,vet,bleu) ' ' Remarque pour les couleurs: ' pour garder la couleur par défaud de l'objet entrer au moins une donnés hors ' limite. Ex: 256,0,0 ou -1,-1,-1 ou -1,0,0 ' ' 2ème Remarque: si l'objet ne supporte pas l'une des 2 commandes COLOR et FONT_COLOR ' et que la variable est renseignée le programme n'en tiendra pas compte (Pas d'erreur) ' ' Cas particulier de l'Objet MOVIE: ' il supporte COLOR mais pas FONT_COLOR donc penser à renseigner cr%,cv%,cb% ' --------------------------- ' 3) Les Objets particuliers: ' - GRID: ' créer l'objet comme les autres ' puis utiliser Compl_Grid(?,?,?,?,?,?,?) avec les variables ci-dessous ' nb_lig%,nb_col% = nombre de lignes et de colonnes ' nb_col_fixe%, nb_lig_fixe% = nombre de lignes et de colonnes fixes ' BW_col$, BH_lig$ = autoriser la modif manuelle des lignes et colonnes "A"=Autoriser ' lig_height% = hauteur des lignes ' col_width% = largeur des colonnes ' cfr%,cfv%,cfb% = Couleur des cellules fixes ' ' - ALPHA_BUTTON ' créer un alpha comme les autres avec Xobjet$ = alpha_button ' puis utiliser la procédure ci-dessous ' Transforme_Alpha_Button(police$,taille%,gra$,chr_caption$) voir l'exemple ' ' - MAIN_MENU et SUB_MENU: ' ' ------------------------------------------------------------------------------ ' REMARQUE SUR LE NOM (identifiant%) DONNER AU NUMERO D'OBJET ' créer une variable pour retenir mentalement le numéro de l'objet (no%) n'est pas ' indispensable au fonctionnement de la procédure. ' EX: la ligne => no%=no%+1:dim Form_principal%:Form_principal%=no% peut être ' remplacer par => no%=no%+1 sans incidence pour la création de l'object ' ------------------------------------------------------------------------------ ' CARTOUCHE D'AIDE ' Copier/Coller les 3 lignes ci-dessous pour créer un objet ' rectifier les variables des 2 premières ligne (la 3 reste fixe pour l'appel SUB)
' Xobjet$="":Xparent%=0:Xwidth%=0:Xheight%=0:Xtop%=0:Xleft%=0 ' Xcaption$="":Xhint$="":cr%=255:cv%=255:cb%=255:fcr%=0:fcv%=0:fcb%=0 ' Create_Object(Xobjet$,Xparent%,Xwidth%,Xheight%,Xtop%,Xleft%,Xcaption$,Xhint$,cr%,cv%,cb%,fcr%,fcv%,fcb%,Xcursor$)
A+
Dernière édition par Jean Claude le Dim 24 Mar 2013 - 14:37, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Create_Object Mer 20 Mar 2013 - 22:55 | |
| Intéressant ! Good Idea ! Deux mérites pour Jean Claude et trois pour Ygeronimi ! Tu ne m'en veux pas Jean Claude, n'est-ce pas ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 20 Mar 2013 - 23:11 | |
| Bravo Jean Claude ! Elle est chouette ta librairie ! Perso, j'avais séparé les objets pour une raison de paramètres qui ne peuvent pas être appliqués à tous les objets et un peu pour la rapidité. Je devais faire une librairie d'attribut pour les objets mais j'ai pas encore eu l'inspiration. Et, comme tu la souligné, tout passer en paramètre d'une seule sub, ...cà fait un appel un peu long | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Jeu 21 Mar 2013 - 7:07 | |
| @Papydall, Le mérite reviens d'abord à Ygeronimi qui a eu l'idée, alors je ne peux pas t'en vouloir de lui donner un point de plus Sinon, j'ai encore du travail sur ce le sujet. Je vais regarder pour le traitement des évènements, il manque SPIN, les options pour GRID sont incomplètes. Je réfléchis aussi à l’opportunité de gérer HIDE/SHOW ACTIVE/INACTIVE et la remise à zéro de certains objets s'ildoivent être utilisés plusieurs fois. Merci pour vos réactions A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 21 Mar 2013 - 15:30 | |
| Une chose à la laquelle il faut réfléchir, ce sont les "on_click". Dans ma Librairie, celle de base, le paramètre est 0 ou 1 et renvoi sur le label "Clic" si le paramètre est 1. La suite est gérée par "Select...case...end_select" dans le label. Ceci n'est valable que si les numéros d'objets sont connus et existants pas si les menus sont dynamiques (cas d'un menu langue qui évolue en ajoutant un fichier Langue.ini dans le dossier Langues )... Dans la dernière version, j'ai modifié pour avoir éventuellement 4 label (Clic,Clic2,....)donc les paramètres vont de 0 à 4. Les autres sont gérés comme suit : - Code:
-
' menu choix joueurs Clic2: Clic2%=Number_Click :M_Joueur%=Clic2% for Gx%=2001 to 2000+count(201) if Gx%=Clic2% :Joueur$=item_read$(201,Gx%-2000):end_if next Gx% for Gx%=2001 to 2000+count(201) if object_exists(Gx%)=1 : Mark_off Gx% : else :Exit_for:end_if next Gx% Mark_on Clic2% return Gx% pour Global x% qui est ma variable passe partout M_Joueur% pour Menu Joueur% qui me mémorise le n° du menu cliqué pour la sauvegarde sur un fichier Param.inf Joueur$ garde le nom du joueur cliqué donc actif. Bon, j'ai refait mon stock de dolipran.... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Jeu 21 Mar 2013 - 18:34 | |
| J'ai pas tout compris , mais je vais essayer. Par contre tu m'as mis la puce à l'oreille concernant ON_CLICK et CHECK, OPTION il y a deux possibilité: le clic déclenche l'action inévitable cocher ou décocher, mais il se peut également qu'il serve en même temps de bouton. Ce matin j'ai ajouter les options qui manquaient pour GRID (comme GRID_ROW_SIZE_ON .....), attention c'est pas encore en ligne. Je vais créer un alpha_button (objet qui n'existe pas) pour différencier du vrai ALPHA. Je vais également préparer une procédure pour réinitialiser un objet. Cette procédure pourra servir dans le programme... j'en dit pas plus je mettrais en ligne dès que ce sera fait. A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 21 Mar 2013 - 19:28 | |
| @ Jean Claude, Je suis entrain de revoir mon jeu "Scrabble_records" je vais te mettre un lien pour que tu vois l'avancée des travaux. Attention, il n'est pas jouable en l'état mais tu verras ce que je veux dire pour la librairie, et tu auras ma dernière mouture. Voilà : lien supprimé Dès que tu me dis que tu l'as téléchargé, je supprimerai ce lien. C'est en état de chantier et pas trop présentable.
Dernière édition par ygeronimi le Jeu 21 Mar 2013 - 20:47, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Jeu 21 Mar 2013 - 20:43 | |
| C'est fait !
Mais je ne vais pas regarder avant samedi ou dimanche.
Merci pour ton aide.
A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Create_Object Jeu 21 Mar 2013 - 20:46 | |
| | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Sam 23 Mar 2013 - 22:16 | |
| Bonsoir à tous, @ygeronimi, Je n'ai pas eu le temps de regarder "Srabble...." car je suis sur mon "Create_object" @tous J'ai avancé, mais j'ai encore des BUG (heu... des bug(s) qui m'appartiennent ) Ces bug(s) sont uniquement sur l’évènement ON_CHANGE Donc version juste pour voir... Faites tourner et regardez les rapports. Pour les plus courageux essayer de remettre en service la ligne 125. Je ne comprends pas pourquoi j'ai déjà un rapport sur ON_CHANGE sans avoir modifier l'édit (de plus le n° d'objet est faux). C'est également valable pour tous les objet qui supportent ON_CHANGE. Le bug est dans mon code..... Pour moi, ce soir c'est terminé, je n"en peux plus de coder et débugger. Je vais aller me distraire un peu. Toutefois la partie ON_CLICK donne des rapports satisfaisant. Notez que j'ai mis l'aide à la fin du code. - Code:
-
Pour Plus de clarté voir le code en début du sujet qui est mis à jour.
A+
Dernière édition par Jean Claude le Dim 24 Mar 2013 - 14:36, édité 4 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Create_Object Sam 23 Mar 2013 - 22:45 | |
| J'ai activé la ligne 125 et j'ai testé. 1. l'évènement ON_CHANGE est normal au début, car dans la ligne 125, tu modifies justement le EDIT que tu viens de créer. Donc, tu provoques toi-même l'évènement. 2. le numéro de l'objet dans le rapport est faux, pour une simple erreur de variable dans la ligne 78. Si tu la remplaces par ceci: - Code:
-
print "N° objet changé / Type / Parent => "+str$(chang%)+" / "+str$(typ%)+" / "+papa$ ça devrait marcher mieux. Beau code ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Dim 24 Mar 2013 - 9:26 | |
| Merci Klaus, tu m'as fait avancer.
Concernant l’évènement ON_CHANGE: effectivement tu as raison, je ne sait pas pourquoi j'avais dans l'idée qu'avant le premier END, ON_CHANGE ne serait pas pris en compte. J'ai donc mis un compteur pour ne pas remplir Form 0 dès le départ.
Concernant la ligne 78 effectivement il y avait une erreur de variable.
Je me suis débattu inutilement, hier, avec MIN et MAX en voulant utiliser MIN() et MAX() pour retourner l'état MIN et MAX des objets BAR. Grave erreur: les fonctions MIN(), MAX() n'ont rien à voir avec MIN et MAX. Et je suis tombé dans le piège (çà m'apprendra à lire la doc plus en détail)
Amélioration apportée ce matin: - correction des bugs ci-dessus - création de la SUB Clear_Variable_Objet() qui permet de réinitialiser les variables %=-1 et $="Non traité" Ce qui permet une lecture plus précise du rapport.
J'ai rééditer le code corrigé ci-dessus (pas le premier en début de page)
Il me reste à coder SPIN ET GRID, et ensuite la SUB Reinit_Objet. Je pense également intégrer le rapport dans une fenêtre indépendante que l'on pourrait appeler à la demande. Ce sera bien utile en cours de codage...
A+
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Dim 24 Mar 2013 - 14:44 | |
| Une nouvelle version en tout début de page (pour ne pas multiplier les code et /code.
Amélioration: - le bouton à changé de fonction, il sert maintenant à effacer le contenu de Form 0 dont l'affichage est passé dans un mémo. - j'ai ajouté une Sub Police_objet(police$,taille%,gra$,italic$,raye$,souligne$)
A bientôt pour la suite | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Create_Object Lun 25 Mar 2013 - 20:13 | |
| Bonsoir, Je suis arrivé au terme de ce que je voulais faire. J'ai séparé en trois fichiers. - Aide_Sub_Creation_des_Objets - Create_Object_Lib - Exemple_Base_prog_avec_CreateObjet Vous les trouverez dans le dossier Base_Create_Objet que vous trouverez sur mon Webdav. panoramicien@Jean_Claude / MdP: panoramic123 / http://www.mydrive.ch/A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Create_Object | |
| |
| | | | Create_Object | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |