PanelGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
GG
Messages : 239
Inscription : jeu. 09/déc./2004 12:23

PanelGadget

Message par GG »

La question du jour.

Dans le code suivant, je voudrais empêcher de pouvoir cliquer sur l'onglet Client lorsque je clique sur un des boutons de l'onglet 'Master' (Ajouter, Modifier, Supprimer) ou lorsque je clique dans la sous fenêtre de l'onglet Master (Nom du client, No client...)

D'avance, mille merci de votre aide.

Code : Tout sélectionner


version1 = 0
version2  = 0
version3 = 1
#WindowWidth  = 1024
#WindowHeight = 768

Global CheminAppli$
Global nbclients

Enumeration
  #Fen_1=0; Fenêtre principale
  #ProgressBar=3; Barre de progression
  #Panel_Gadget=49; Panel Gadget principal (système d'onglets Clients/Master...)
  #Calend_Master=100
  #Ajout_Ferie=101
  #Suppr_Ferie=102
  #Bouton_Calend_OK=103
  #Bouton_Calend_Cancel=104
  #Liste_Client=10
  #Liste_Master=40
  #Frame_Master_Ferie=50
  #Frame_GMaster=60
  #Annee_Master=70   
  #Finmois_Master=71 
   #Lundi_Master=72
  #Mardi_Master=73
  #Mercredi_Master=74
  #Jeudi_Master=75
  #Vendredi_Master=76
  #Samedi_Master=77
  #Dimanche_Master=78
  #TitreNom_Master=80
  #TitreAnnee_Master=81
  #TitreFinmois_Master=82
  #TitreLundi_Master=83
  #TitreMardi_Master=84
  #TitreMercredi_Master=85
  #TitreJeudi_Master=86
  #TitreVendredi_Master=87
  #TitreSamedi_Master=88
  #TitreDimanche_Master=89
  #TitreFerie_Master=92
  #JoursF_Master=93
  #Jours_Ouvres=91
  #Master_Ferie=51; fenêtre affichant les jours fériés pour un master
  #Ajout_Client=11; Bouton Ajout d'un client
  #Ajout_Master=21; Bouton Ajout d'un Master
  #Modif_Client=12; Bouton Modification d'un client
  #Modif_Master=22
  #Suppr_Client=13; Bouton Suppression d'un client
  #Suppr_Master=23
  #Frame_GClient=17 ; Frame 3D Gadget Ajout/Modification Client
  #Frame_Client=30; Frame3D Gadget "Gestion des Clients"
  #Nom_Client=14; StringGadget Saisie du Nom du Client
  #Nom_Master=52 ; Nom du Master saisi
  #Os_Client=15; Choix de l'OS Client
  #Sgbd_Client=16; Choix du SGBD Client
  #OK_Client=18; Bouton OK Client (Ajout, Modification, Suppression)
  #Annuler_Client=19; Bouton Annuler
EndEnumeration;

Structure Client
  libcli.s
  nocli.w
  noos.w
  nosgbd.w
EndStructure
  
Structure master 
  id_masteri.w
  annee.w
  finmois.w
  libmas.s
  lundi.s
  mardi.s
  mercredi.s
  jeudi.s
  vendredi.s
  samedi.s
  dimanche.s 
EndStructure

Structure Os
  noos.w
  libos.s
EndStructure

Structure sgbd
  nosgbd.w
  libsgbd.s
  caracEOL.s
  instexec.s
EndStructure

Structure ferie
  id_masterf.w
  datef.s
EndStructure

Structure jferie
  datef.s
EndStructure

NewList Client.Client()
NewList sgbd.sgbd()
NewList master.master()
NewList ferie.ferie()
NewList jferie.jferie()
NewList os.Os()  

;/ ***********
;/ * Procédures *
;/ ***********

;- Affiche_Ferie() * Affiche la liste des jours fériés pour un Master donné

Procedure Affiche_Ferie(numero)
  ResetList(ferie())
  CreateGadgetList(WindowID())
  Frame3DGadget(#Frame_Master_Ferie,250,240,120,120,"Jours Fériés")
  ListIconGadget(#Master_Ferie,270,260,90,90,"  Date  ",80)
  posmas=GetGadgetState(#Liste_Master)
  ResetList(master())
  SelectElement(master(),posmas)
  idm=master()\id_masteri
  ResetList(ferie())
  While NextElement(ferie())
    If idm=ferie()\id_masterf
      AddGadgetItem(#Master_Ferie,-1,ferie()\datef);
    EndIf
  Wend
EndProcedure

;- Gestion_Client()

Procedure Gestion_Client()
  If CreateGadgetList(WindowID()); On créée la GadgetList pour afficher les infos
    PanelGadget   (#Panel_Gadget,50,50,690,320)
    AddGadgetItem(#Panel_Gadget,-1,"Clients")
    ButtonGadget     (#Ajout_Client, 30, 20, 80, 24, "Ajouter")          ; Bouton Ajouter
    ButtonGadget     (#Modif_Client, 30, 70, 80, 24, "Modifier")          ; Bouton Modifier
    ButtonGadget     (#Suppr_Client, 30, 120, 80, 24, "Supprimer")          ; Bouton Supprimer
    ListIconGadget(#Liste_Client,180,10,390, 150,"Nom du Client",150)
    AddGadgetColumn(#Liste_Client, 1, "No Client",65)                   
    AddGadgetColumn(#Liste_Client, 2, "OS",75)                    
    AddGadgetColumn(#Liste_Client, 3, "SGBD",75)   
    SetGadgetState(#Panel_Gadget,0);
    DisableGadget(#Modif_Client,1);
    DisableGadget(#Suppr_Client,1);
  EndIf
  ResetList(Client())
  ResetList(os())
  ResetList(sgbd())
  position=0
  nb=0;
  While NextElement(Client())
    If Client()\nocli>nb; on récupère le max du nocli
      nb=Client()\nocli
    EndIf 
    trouve_os=0
    ResetList(os())
    While NextElement(os()) And trouve_os=0
      If os()\noos=Client()\noos
        trouve_os=1
        libos$=os()\libos; On stocke le libellé dès que trouvé
      EndIf
    Wend
    trouve_sgbd=0
    ResetList(sgbd())
    While NextElement(sgbd()) And trouve_sgbd=0
      If sgbd()\nosgbd=Client()\nosgbd
        trouve_sgbd=1
        libsgbd$=sgbd()\libsgbd
      EndIf
    Wend
    AddGadgetItem(#Liste_Client,position,Client()\libcli+Chr(10)+Str(Client()\nocli)+Chr(10)+libos$+Chr(10)+libsgbd$); 
    position=position+1
  Wend
  noelement=clients;
  CloseGadgetList()
  ProcedureReturn nb 
EndProcedure

;- Gestion_Ferie

Procedure Gestion_Ferie()
EndProcedure

;- Gestion_Master()

Procedure Gestion_Master()
    If CreateGadgetList(WindowID()); On créée la GadgetList pour afficher les infos
      AddGadgetItem(#Panel_Gadget,-1,"Master")
      ListIconGadget(#Liste_Master,180,10,800, 150,"No Master",65)
      AddGadgetColumn(#Liste_Master, 1, "Année",55)                   
      AddGadgetColumn(#Liste_Master, 2, "Fin de mois",75)                    
      AddGadgetColumn(#Liste_Master, 3, "Libellé Master",205)   
      AddGadgetColumn(#Liste_Master, 4, "Lundi",45)                   
      AddGadgetColumn(#Liste_Master, 5, "Mardi",45)                    
      AddGadgetColumn(#Liste_Master, 6, "Mercredi",60)   
      AddGadgetColumn(#Liste_Master, 7, "Jeudi",45)                   
      AddGadgetColumn(#Liste_Master, 8, "Vendredi",60)                    
      AddGadgetColumn(#Liste_Master, 9, "Samedi",50)   
      AddGadgetColumn(#Liste_Master, 10, "Dimanche",65)                    
      ButtonGadget(#Ajout_Master, 30, 20, 80, 24, "Ajouter")          ; Bouton Ajouter
      ButtonGadget(#Modif_Master, 30, 70, 80, 24, "Modifier")          ; Bouton Modifier
      ButtonGadget(#Suppr_Master, 30, 120, 80, 24, "Supprimer")          ; Bouton Supprimer
      SetGadgetState(#Panel_Gadget,0);
    EndIf
    ResetList(master())
    position=0
    nb=0;
    While NextElement(master())
      If master()\id_masteri>nb; on récupère le max du nocli
        nb=master()\id_masteri
      EndIf 
      DisableGadget(#Modif_Master,1);
      DisableGadget(#Suppr_Master,1);
      tempo$=Str(master()\id_masteri)+Chr(10)+Str(master()\annee)+Chr(10)+Str(master()\finmois)+Chr(10)+master()\libmas+Chr(10)+master()\lundi+Chr(10)+master()\mardi+Chr(10)
      tempo$=tempo$+master()\mercredi+Chr(10)+master()\jeudi+Chr(10)+master()\vendredi+Chr(10)+master()\samedi+Chr(10)+master()\dimanche+Chr(10)
      AddGadgetItem(#Liste_Master,position,tempo$);
      position=position+1
    Wend
    noelement=clients; 
    ProcedureReturn nb 
  
EndProcedure

;- Gestion_Os()
Procedure Gestion_Os()
EndProcedure
;- Gestion_Planning()
Procedure Gestion_Planning()
EndProcedure
;- Gestion_Sgbd()
Procedure Gestion_Sgbd()
EndProcedure
;- Ajout_Master
Procedure ajout_master(master);
EndProcedure  
;- Modif_Master () Modification d'un Master et de ses jours fériés
Procedure modif_master(noelement)
EndProcedure
;- Ajout_Client
Procedure Ajout_Client(clients);
EndProcedure;
;- Modif_Client
Procedure Modif_Client(noelement);
   EndProcedure
;- Suppr_Client
Procedure Suppr_Client(noelement);
 EndProcedure
 Procedure Suppr_Master(noelement);
EndProcedure
;- Début du programme
If OpenWindow(#Fen_1, 200, 120, #WindowWidth, #WindowHeight, #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered , "Test v"+Str(version1)+"."+Str(version2)+Str(version3))
    
    ;- ******************************************
    ;- * Chargement des fichiers de paramétrage *
    ;- ******************************************
  
          maxcli=Gestion_Client()
          maxmas=Gestion_Master() 
            Gestion_Os()
            Gestion_Sgbd()
            Gestion_Ferie()
            Gestion_Planning()
            Repeat 
              EventID=WaitWindowEvent()
              If EventID=#PB_EventGadget 
                Select EventGadgetID() 
                  Case #Liste_Client; Selection Client
                    Pos = GetGadgetState(#Liste_Client) 
                    If Pos >= 0
                      DisableGadget(#Ajout_Client,0);  On active Ajouter
                      DisableGadget(#Modif_Client,0); Modifier
                      DisableGadget(#Suppr_Client,0); Supprimer 
                      noelement=Pos;
                    EndIf 
                  Case #Ajout_Client;
                    maxcli=Ajout_Client(maxcli+1);
                  Case #Modif_Client
                    Modif_Client(noelement);
                  Case #Suppr_Client;
                    maxcli=Suppr_Client(noelement);  
                  Case #Liste_Master; selection Master
                    Pos = GetGadgetState(#Liste_Master) 
                    If Pos >= 0
                      DisableGadget(#Ajout_Master,0);  On active Ajouter
                      DisableGadget(#Modif_Master,0); Modifier
                      DisableGadget(#Suppr_Master,0); Supprimer 
                      noelement=Pos;
                      Affiche_Ferie(Pos)
                    EndIf
                  Case #Ajout_Master
                    maxmas=ajout_master(maxmas+1)
                  Case #Modif_Master
                    modif_master(noelement)
                  Case #Suppr_Master
                    maxmas=Suppr_Master(noelement)
                EndSelect 
              EndIf 
            Until EventID=#PB_EventCloseWindow 
EndIf
PureBasic 6.03 - Windows 11 22H2 (64 bits)
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

essaye la commande DisableGadget(#Gadget, Etat)
GG
Messages : 239
Inscription : jeu. 09/déc./2004 12:23

Message par GG »

Cela désactive l'intégralité de mon panelgadget au lieu de désactiver uniquement l'onglet souhaité.

Merci quand même bernard13.
PureBasic 6.03 - Windows 11 22H2 (64 bits)
Répondre