Tuto menu onglet Partie 3 (ajout des onglet/grp/bt)

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Tuto menu onglet Partie 3 (ajout des onglet/grp/bt)

Message par microdevweb »

Placer ces procédures dans

Code : Tout sélectionner

Module ToolsBar

EndModule
et déclarer les dans

Code : Tout sélectionner

DeclareModule ToolsBar
      Declare Init(Id,IdWindow,X,Y,Width=-1,Heidht=100)Init(Id,IdWindow,X,Y,Width=-1,Heidht=100)
      Declare AddOnglet(IdTools,Id,Title$,Selected.b=#False)
      Declare AddGroupe(IdTools,IdOnglet,Widht,Title$,BorderOn.b=#True,TitleBox.b=#True,TitlePosUp.b=#False)
      Declare AddImageButton(IdTools,IdOnglet,Ngroupe,Id,Image,X,Y,W,H,Toogle.b=#False)
      Declare AddSpin(IdTools,IdOnglet,Ngroupe,Id,X,Y,Width,Height,Min,Max,Value=0)
      Declare AddLabel(IdTools,IdOnglet,Ngroupe,X,Y,Width,height,Value$,Justification=#Left)
EndDeclareModule

Code : Tout sélectionner

;Cette procédure va ajouter un onglet en mémoire
      Procedure AddOnglet(IdTools,Id,Title$,Selected.b=#False)
            ;Vérifie si le menu onglet existe
            If FindMapElement(myTools(),Str(IdTools))=0
                  MessageRequester("Error ToolsBar AddOnglet","This Tolls Id not exist...")
                  ProcedureReturn 0
            EndIf
            ;Si pb any on autoincrémente
            If Id=#PB_Any
                  AddMapElement(myTools()\MyOnglet(),Str(MapSize(myTools()\MyOnglet())+1))
            Else
                  ;Vérifie si l'onglet n'existe poas déjà
                  If FindMapElement(myTools()\MyOnglet(),Str(Id))<>0
                        MessageRequester("Error ToolsBar AddOnglet","This Onglet Id already exist...")
                        ProcedureReturn 0
                  EndIf
                  AddMapElement(myTools()\MyOnglet(),Str(Id))
            EndIf
            myTools()\MyOnglet()\Title$=Title$
            myTools()\MyOnglet()\Number=MapSize(myTools()\MyOnglet())-1
            myTools()\MyOnglet()\Selected=Selected
            ;Retourner l'id de l'onglet
            ProcedureReturn Val(MapKey(myTools()\MyOnglet()))
      EndProcedure

Code : Tout sélectionner

;Procédure pour ajouter les groupes
      Procedure AddGroupe(IdTools,IdOnglet,Widht,Title$,BorderOn.b=#True,TitleBox.b=#True,TitlePosUp.b=#False)
            ;Vérifie si le menu onglet existe
            If FindMapElement(myTools(),Str(IdTools))=0
                  MessageRequester("Error ToolsBar AddGroupe","This Tolls Id not exist...")
                  ProcedureReturn 0
            EndIf
            ;Vérifie si l'onglet existe
            If FindMapElement(myTools()\MyOnglet(),Str(IdOnglet))=0
                  MessageRequester("Error ToolsBar AddGroupe","This Onglet Id not exist...")
                  ProcedureReturn 0
            EndIf
            ;Se positionne à la fin de la liste
            LastElement(myTools()\MyOnglet()\myGroupe())
            AddElement(myTools()\MyOnglet()\myGroupe())
            myTools()\MyOnglet()\myGroupe()\Widht=Widht
            myTools()\MyOnglet()\myGroupe()\Title$=Title$
            myTools()\MyOnglet()\myGroupe()\TitleBox=TitleBox
            myTools()\MyOnglet()\myGroupe()\BordreOn=BorderOn
            myTools()\MyOnglet()\myGroupe()\TilePosUp=TitlePosUp
      EndProcedure 

Code : Tout sélectionner

 ;Procédure pour ajouter les boutons
      Procedure AddImageButton(IdTools,IdOnglet,Ngroupe,Id,Image,X,Y,W,H,Toogle.b=#False)
            Protected GroupeExist.b=#False,IdUse
            ;Vérifie si le menu onglet existe
            If FindMapElement(myTools(),Str(IdTools))=0
                  MessageRequester("Error ToolsBar AddImageButton","This Id Tools not exist...")
                  ProcedureReturn -1
            EndIf
            ;Vérifie si l'onglet existe
            If FindMapElement(myTools()\MyOnglet(),Str(IdOnglet))=0
                  MessageRequester("Error ToolsBar AddImageButton","This Id Onglet not exist...")
                  ProcedureReturn -1
            EndIf
            ;Recheche du groupe dans la liste
            ForEach myTools()\MyOnglet()\myGroupe()
                  If ListIndex(myTools()\MyOnglet()\myGroupe())=Ngroupe
                        GroupeExist=#True ;Le groupe est trouvé
                        Break ;Pour rester pointer sur le bon record
                  EndIf
            Next
            ;Si le groupe n'a pas été trouvé, renvoyer un message d'erreur
            If GroupeExist=#False
                  MessageRequester("Error ToolsBar AddImageButton","This Number groupe not exist...")
                  ProcedureReturn -1
            EndIf
            If Id=#PB_Any
                  IdUse=MapSize(myTools()\MyOnglet()\myGroupe()\myImgButton())
            Else
                  IdUse=Id
                  ;Vérifie que l'id du bouton n'existe pas déjà
                  If FindMapElement(myTools()\MyOnglet()\myGroupe()\myImgButton(),Str(IdUse))<>0
                        MessageRequester("Error ToolsBar AddImageButton","This Id button already exist...")
                        ProcedureReturn -1
                  EndIf
                 AddMapElement(myTools()\MyOnglet()\myGroupe()\myImgButton(),Str(IdUse))
            EndIf
            myTools()\MyOnglet()\myGroupe()\myImgButton()\H=H
            myTools()\MyOnglet()\myGroupe()\myImgButton()\W=W
            myTools()\MyOnglet()\myGroupe()\myImgButton()\X=X
            myTools()\MyOnglet()\myGroupe()\myImgButton()\Y=Y
            myTools()\MyOnglet()\myGroupe()\myImgButton()\IdImage=Image
            myTools()\MyOnglet()\myGroupe()\myImgButton()\Toogle=Toogle
            myTools()\MyOnglet()\myGroupe()\myImgButton()\State=#False
            myTools()\MyOnglet()\myGroupe()\myImgButton()\Disabled=#False
            myTools()\MyOnglet()\myGroupe()\myImgButton()\ProcedureCallback=-1
            ;Renvoyer l'id du bouton
            ProcedureReturn IdUse
      EndProcedure

Code : Tout sélectionner

;Procédure pour ajouter un spin
      Procedure AddSpin(IdTools,IdOnglet,Ngroupe,Id,X,Y,Width,Height,Min,Max,Value=0)
             Protected GroupeExist.b=#False,IdUse
             ;Vérifie si le menu onglet existe
             If FindMapElement(myTools(),Str(IdTools))=0
                  MessageRequester("Error ToolsBar AddSpin","This Id Tools not exist...")
                  ProcedureReturn -1
            EndIf
            ;Vérifie si l'onglet existe
            If FindMapElement(myTools()\MyOnglet(),Str(IdOnglet))=0
                  MessageRequester("Error ToolsBar AddSpin","This Id Onglet not exist...")
                  ProcedureReturn -1
            EndIf
            ForEach myTools()\MyOnglet()\myGroupe()
                  If ListIndex(myTools()\MyOnglet()\myGroupe())=Ngroupe
                        GroupeExist=#True ;Le groupe est trouvé
                        Break ;pour rester pointer sur le bon record
                  EndIf
            Next
            ;Si le groupe n'est pas trouvé afficher message d'erreur
            If GroupeExist=#False
                  MessageRequester("Error ToolsBar AddSpin","This Number groupe not exist...")
                  ProcedureReturn -1
            EndIf
            If Id=#PB_Any
                  IdUse=MapSize(myTools()\MyOnglet()\myGroupe()\mySpin())
            Else
                  If FindMapElement(myTools()\MyOnglet()\myGroupe()\mySpin(),Str(IdUse))<>0
                        MessageRequester("Error ToolsBar AddSpin","This Id spin  already exist...")
                        ProcedureReturn -1
                  EndIf
                  IdUse=Id
            EndIf
            AddMapElement(myTools()\MyOnglet()\myGroupe()\mySpin(),Str(IdUse))
            myTools()\MyOnglet()\myGroupe()\mySpin()\Disabled=#False
            myTools()\MyOnglet()\myGroupe()\mySpin()\Min=Min
            myTools()\MyOnglet()\myGroupe()\mySpin()\Max=Max
            myTools()\MyOnglet()\myGroupe()\mySpin()\Value=Value
            ;Si la valeur demandé est plus petite que le minimum, changer le minimum
            If Value<Min
                  myTools()\MyOnglet()\myGroupe()\mySpin()\Value=Min
            EndIf
            ;Si la valeur demandé est plus grande que le maximum changer le maximum
            If Value>Max
                  myTools()\MyOnglet()\myGroupe()\mySpin()\Value=Max
            EndIf
            ;Les paramètre par defaut seront modifiable
            myTools()\MyOnglet()\myGroupe()\mySpin()\ColorBox=$FFFFFF
            myTools()\MyOnglet()\myGroupe()\mySpin()\ColorFont=$000000
            myTools()\MyOnglet()\myGroupe()\mySpin()\Font=LoadFont(#PB_Any,"Tme new roman",11,#PB_Font_HighQuality|#PB_Font_Bold)
            myTools()\MyOnglet()\myGroupe()\mySpin()\ColorLine=$808000
            myTools()\MyOnglet()\myGroupe()\mySpin()\HelpImage=-1
            myTools()\MyOnglet()\myGroupe()\mySpin()\X=X
            myTools()\MyOnglet()\myGroupe()\mySpin()\Y=Y
            myTools()\MyOnglet()\myGroupe()\mySpin()\W=Width
            myTools()\MyOnglet()\myGroupe()\mySpin()\H=Height
            myTools()\MyOnglet()\myGroupe()\mySpin()\ProcedureCallback=-1
      EndProcedure

Code : Tout sélectionner

;Procédure pour ajouter un texte
      Procedure AddLabel(IdTools,IdOnglet,Ngroupe,X,Y,Width,height,Value$,Justification=#Left)
             Protected GroupeExist.b=#False,IdUse
             ;Vérifie si le menu onglet existe
             If FindMapElement(myTools(),Str(IdTools))=0
                  MessageRequester("Error ToolsBar AddLabel","This Id Tools not exist...")
                  ProcedureReturn -1
            EndIf
            ;Vérifie si l'onglet existe
            If FindMapElement(myTools()\MyOnglet(),Str(IdOnglet))=0
                  MessageRequester("Error ToolsBar AddLabe","This Id Onglet not exist...")
                  ProcedureReturn -1
            EndIf
            ForEach myTools()\MyOnglet()\myGroupe()
                  If ListIndex(myTools()\MyOnglet()\myGroupe())=Ngroupe
                        GroupeExist=#True ;Le groupe à été trouvé
                        Break
                  EndIf
            Next
            ;Le le groupe n'a pas été trouvé envoyer message d'erreur
            If GroupeExist=#False
                  MessageRequester("Error ToolsBar AddLabel","This Number groupe not exist...")
                  ProcedureReturn -1
            EndIf
            AddElement(myTools()\MyOnglet()\myGroupe()\myLabel())
            myTools()\MyOnglet()\myGroupe()\myLabel()\X=X
            myTools()\MyOnglet()\myGroupe()\myLabel()\Y=Y
            myTools()\MyOnglet()\myGroupe()\myLabel()\W=Width
            myTools()\MyOnglet()\myGroupe()\myLabel()\H=height
            myTools()\MyOnglet()\myGroupe()\myLabel()\Value$=Value$
            myTools()\MyOnglet()\myGroupe()\myLabel()\Font=LoadFont(#PB_Any,"Arial",12,#PB_Font_HighQuality)
            myTools()\MyOnglet()\myGroupe()\myLabel()\BackColor=0
            myTools()\MyOnglet()\myGroupe()\myLabel()\FrontColor=$FF0000
            ;L'ajoute à bien été fait renvoyer 1
            ProcedureReturn 1
      EndProcedure
à utiliser en dehors du module comme suit

Code : Tout sélectionner

ToolsBar::Init(#Id_Menu_Onglet,#ID_Form,X,Y,W,H)
;True à la fin si l'onglet doit être selectionner par défaut
ToolsBar::AddOnglet(#Id_Menu_Onglet,#Id_onglet,"Titre",#True)
;Le premier true/false pour avoir ou ne pas avoir une bordure autour du groupe
;Le second true/false pour avoir ou ne pas avoir une bordure autour du titre
;Le troisième true/false pour avoir le titre en haut si true en bas si false
ToolsBar::AddGroupe(#Id_Menu_Onglet,#Id_onglet,#Largeur,"Titre",#True,#True,#False)
;Il faut une image à 4 états ,#ToogleTrue True si bouton toogle false si bouton normal
ToolsBar::AddImageButton(#Id_Menu_Onglet,#Id_onglet,#Ngroupe,#IdBouton,#Id_Image,X,Y,W,H,#ToogleTrue)
;Pour la justification on ajoute les constante suivante dans la décalration du module
;  Enumeration Alignement
;             #Middle
;             #Left
;             #Right
;  EndEnumeration
ToolsBar::AddLabel(#Id_Menu_Onglet,#Id_onglet,#Ngroupe,X,Y,Largeur,Hauteur,Texte$,Justification)
La partie 4 ICI
http://www.purebasic.fr/french/viewtopi ... 21&t=14733


Editer le 27/08/2014 à 12h39 pour une petite correction
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège