[Résolu] Paramétrer la hauteur d'un ListIconGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Paramétrer la hauteur d'un ListIconGadget

Message par Micoute »

Bonjour à tous,

j'aimerais créer un ListIconGadget dont la hauteur varierait selon le nombre de lignes à afficher.

Cela est-il réalisable ?

Je vous remercie tous à l'avance.
Dernière modification par Micoute le lun. 03/juin/2013 13:08, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Paramétrer la hauteur d'un ListIconGadget

Message par MLD »

Salut Micoute

Oui Oui c'est possible.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Paramétrer la hauteur d'un ListIconGadget

Message par Micoute »

MLD a écrit :Salut Micoute

Oui Oui c'est possible.
Bonjour et merci mon cher MLD et ravi d'apprendre que c'est possible, tu veux encore que je transpire ?

Comme un exemple vaut mille explications, je joints mon programme:

Code : Tout sélectionner

DisableDebugger
; Enumerations / DataSections
Enumeration
   #Fenetre_principale
   #Base_de_donnees
EndEnumeration

Enumeration   
   #Liste
   #Bouton_Quitter
EndEnumeration

Structure Rdv
   Quand.s
   Qui.s
   AvecQui.s
   Ville.s
   Heure.s
   Duree.s
   Note.s
EndStructure

Global NewList Rdv.Rdv()
;Application 
Global TitreApplication.s="Planning"

;Base_de_donnees
Global Base_de_donnees.s = "D:\Programmation\Compil\Planning3.Sqlite"
Global Table.s = "Rdv"
Global ReqSql.s = ""

; Déclarer les variables
Global.s Date_Quand, Qui, AvecQui, Ville, Heure, Duree, Note

UseJPEGImageDecoder()
UseSQLiteDatabase()

Procedure CentrerTitreFenetre(TitreFenetre.s, NumeroFenetre)
   Protected NCM.NonClientMetrics, ValeurRetournee, DcSauve, AncObjet
   Protected hFonteConsole, HdcCourant, TailleTs.SIZE
   Protected Espace_a_remplir, RectFenetre.Rect, NbrEspaceDemandes
   
   NCM\cbSize = SizeOf(NCM)
   ValeurRetournee = SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS, 0, @NCM, 0)
   hFonteConsole = CreateFontIndirect_(@NCM\lfCaptionFont)
   If hFonteConsole <> 0
      HdcCourant = GetDC_(WindowID(NumeroFenetre))
      DcSauve = SaveDC_(HdcCourant)
      AncObjet = SelectObject_(HdcCourant, hFonteConsole)
      ValeurRetournee = GetWindowRect_(WindowID(NumeroFenetre), @RectFenetre)
      ValeurRetournee = GetTextExtentPoint32_(HdcCourant, @TitreFenetre, Len(TitreFenetre), @TailleTs)
      Espace_a_remplir = RectFenetre\right - RectFenetre\left - 4 * NCM\iCaptionWidth - TailleTs\cx
      ValeurRetournee = GetTextExtentPoint32_(HdcCourant, " ", 1, @TailleTs)
      NbrEspaceDemandes = (Espace_a_remplir / TailleTs\cx)/2
      If NbrEspaceDemandes > 0
         TitreFenetre = Space(NbrEspaceDemandes) + TitreFenetre
      EndIf    
   EndIf
   ValeurRetournee = SetWindowText_(WindowID(NumeroFenetre), TitreFenetre)
   ValeurRetournee = RestoreDC_(HdcCourant, DcSauve) ; mettre en ordre
   ValeurRetournee = DeleteObject_(hFonteConsole)
   ReleaseDC_(WindowID(NumeroFenetre), HdcCourant)  
EndProcedure

Procedure Erreurs(Valeur.l)
   Select Valeur
      Case 0 ;Erreur dans la création de la base de données 
         MessageRequester(TitreApplication,"Erreur durant la création de la base de données")
         
      Case 1 ;Base pas accessible
         MessageRequester(TitreApplication,"La base de donnée n'est pas accessible "+DatabaseError())  
         
      Case 2 ;Erreur lors de l'execution de la requete
         MessageRequester(TitreApplication,"Erreur durant l'exécution de la requete "+DatabaseError()) 
         
   EndSelect
   
   ;Sortie de l'application
   End
EndProcedure

Procedure DatabaseOpen()
   If OpenDatabase(#Base_de_donnees, Base_de_donnees, "", "", #PB_Database_SQLite)
   Else
      Erreurs(1)
      End      
   EndIf
EndProcedure

Procedure ViewRecord()
   ReqSql = "SELECT * FROM " + Table
   If DatabaseQuery(#Base_de_donnees, ReqSql) <> 0
      While NextDatabaseRow(#Base_de_donnees)         
         
         AddElement(Rdv())  
         Rdv()\Quand = GetDatabaseString(#Base_de_donnees, 1)
         Rdv()\Qui = GetDatabaseString(#Base_de_donnees, 2)
         Rdv()\AvecQui = GetDatabaseString(#Base_de_donnees, 3)
         Rdv()\Ville = GetDatabaseString(#Base_de_donnees, 4)
         Rdv()\Heure = GetDatabaseString(#Base_de_donnees, 5)
         ;EndIf
      Wend
      
      FinishDatabaseQuery(#Base_de_donnees)
   Else
      Erreurs(2)
   EndIf
EndProcedure

Procedure Ouvrir_Fenetre_principale()
   If OpenWindow(#Fenetre_principale, 0, 0, 675, 330, "", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
      CentrerTitreFenetre(".:LISTE RDV Par Michel Lye © 30/05/2013:.", #Fenetre_principale)
      
      ListIconGadget(#Liste, 0, 0, WindowWidth(#Fenetre_principale), WindowHeight(#Fenetre_principale) - 80, "Nom", 200,
                     #PB_ListIcon_FullRowSelect)
      AddGadgetColumn(#Liste, 1,"Rdv le", 70)
      AddGadgetColumn(#Liste, 2,"avec", 200)
      AddGadgetColumn(#Liste, 3, "où", 150)
      AddGadgetColumn(#Liste, 4, "heure", 50)
      
      ButtonGadget(#Bouton_Quitter, (WindowWidth(#Fenetre_principale)/2) - 40, 280, 80, 30, "Quitter")
   EndIf
EndProcedure

;Création de la base de données si inexistant 
If Not ReadFile(#Base_de_donnees, Base_de_donnees)
   MessageRequester("ATTENTION", "Votre base de données" + Base_de_donnees + #CRLF$ + "n'existe pas !", #MB_ICONWARNING)
Else
   CloseFile(#Base_de_donnees)
EndIf 

;Ouverture de la base de données 
DatabaseOpen()

;Lire la base de données
ViewRecord()

Ouvrir_Fenetre_principale()

;Analyser les données et les ajouter à la liste si elle correspondent à nos critères
ForEach rdv()
   Aujourdhui = Date(Year(Date()), Month(Date()), Day(Date()), 0, 0, 0)
   difference =(Date(Val(Right(Rdv()\Quand,4)), Val(Mid(Rdv()\Quand, 3, 2)), Val(Left(Rdv()\Quand,2)), 0, 0, 0)-Aujourdhui)/86400
   
   If difference > 0
      Texte.s = Rdv()\Qui + #LF$ + Left(Rdv()\Quand, 2) + "/" + Mid(Rdv()\Quand, 3, 2) + "/" + Right(Rdv()\Quand, 4) + #LF$ + 
                Rdv()\AvecQui + #LF$ + Rdv()\Ville + #LF$ + Left(Rdv()\Heure, 2)+" h " + Right(Rdv()\Heure, 2)
      AddGadgetItem(#Liste, -1, Texte)
   EndIf   
Next

;- Boucle
;{- Boucle d'événements
Repeat
   Event = WaitWindowEvent()
   Select Event
      Case #PB_Event_Gadget
         EventGadget = EventGadget()
         EventType = EventType()
         If EventGadget = #Bouton_Quitter
            CloseWindow(#Fenetre_principale)
            Break         
         EndIf
      Case #PB_Event_CloseWindow
         EventWindow = EventWindow()
         If EventWindow = #Fenetre_principale
            CloseWindow(#Fenetre_principale)
            Break
         EndIf
   EndSelect
ForEver
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Paramétrer la hauteur d'un ListIconGadget

Message par kernadec »

bonjour Micoute

tu as la solution du resizegadget
Cordialement

Code : Tout sélectionner

Repeat 
  Event = WaitWindowEvent() 
  Select Event 
    Case #PB_Event_Gadget 
      EventGadget = EventGadget() 
      EventType = EventType() 
      If EventGadget = #Bouton_Quitter 
        CloseWindow(#Fenetre_principale) 
        Break          
      EndIf 
    Case #PB_Event_SizeWindow                  ;ajout de hpixel suivant hauteur police            
      ResizeGadget(#Liste,#PB_Ignore,#PB_Ignore,#PB_Ignore,GadgetHeight(#Liste)+hpixel)  
    Case #PB_Event_CloseWindow 
      EventWindow = EventWindow() 
      If EventWindow = #Fenetre_principale 
        CloseWindow(#Fenetre_principale) 
        Break 
      EndIf 
  EndSelect 
ForEver 
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Paramétrer la hauteur d'un ListIconGadget

Message par Ar-S »

kernadec a écrit :bonjour Micoute

tu as la solution du resizegadget
Cordialement
Voilà voilà
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Paramétrer la hauteur d'un ListIconGadget

Message par Micoute »

Merci beaucoup à tous,
tu as la solution du resizegadget
Je crois qu'il va falloir que j'arrête la programmation, car j'oublie les bases !

Merci encore.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre