IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Sauvegarder nouvelles propriétés des contrôles [AC-2003]


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 54
    Points : 48
    Points
    48
    Par défaut Sauvegarder nouvelles propriétés des contrôles
    Bonjour a tous,

    Après quelques bidouillages, j'ai trouvé une façon de modifier l'emplacement et la taille de tous les contrôles d'un formulaire quand on le "resize".

    Ca fonctionne super bien sauf que, si l'utilisateur sauvegarde le formulaire, la taille du formulaire est changée mais pas les nouvelles propriétés des contrôles

    => Si le formulaire est plus grand au moment de la sauvegarde, il y a de grands vides a droite et en bas du formulaire quand on l'ouvre a nouveau.
    Par contre, si on avait diminué sa taille, on ne voit plus tous les contrôles.

    Que dois-je ajouter pour sauvegarder les changements que j'ai fais sur les contrôles du formulaire?

    Voici mon code (et on ne rigole pas SVP! )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Compare Database
     
    Dim FWidth As Integer
    Dim FInsideheight As Integer
    Dim InfoControles(100, 5) As Variant
    Dim NbControles As Integer
     
    Private Sub Form_Open(Cancel As Integer)
      Dim Ctrl As Control
      Dim prp As Property
      Dim i As Integer
     
      FWidth = Me.InsideWidth
      FInsideheight = Me.InsideHeight
     
      Erase InfoControles
     
     
      NbControles = 0
     
      For Each Ctrl In Me
        NbControles = NbControles + 1
      Next Ctrl
     
      i = 0
     
      For Each Ctrl In Me
        InfoControles(i, 0) = Ctrl.Properties("Name")
        InfoControles(i, 1) = Ctrl.Properties("ControlType")
        InfoControles(i, 2) = Ctrl.Properties("Left")
        InfoControles(i, 3) = Ctrl.Properties("Top")
        InfoControles(i, 4) = Ctrl.Properties("Width")
        InfoControles(i, 5) = Ctrl.Properties("Height")
        i = i + 1
      Next Ctrl
    End Sub
     
    Private Sub Form_Resize()
      Dim Ctrl As Control
      Dim NewFWidth As Integer
      Dim NewFInsideheight As Integer
     
      NewFWidth = Me.InsideWidth
      NewFInsideheight = Me.InsideHeight
     
      For Each Ctrl In Me
        For i = 0 To NbControles
          If InfoControles(i, 0) = Ctrl.Properties("Name") Then
            Ctrl.Properties("Left") = (InfoControles(i, 2) * NewFWidth / FWidth)
            Ctrl.Properties("Top") = (InfoControles(i, 3) * NewFInsideheight / FInsideheight)
            Ctrl.Properties("Width") = (InfoControles(i, 4) * NewFWidth / FWidth)
            Ctrl.Properties("Height") = (InfoControles(i, 5) * NewFInsideheight / FInsideheight)
          End If
        Next i
      Next Ctrl
     
     
    End Sub
    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 54
    Points : 48
    Points
    48
    Par défaut EUREKA
    J'ai trouvé une parade tout seul comme un grand.

    Suffisait de mettre un code a l'ouverture du formulaire qui :
    - enregistre la taille
    - remet la taille que j'avais défini a la création
    - fait tout mon charabia de code
    - remet a la taille sauvegardée par l'utilisateur (et mon charabia retourne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Option Compare Database
     
    Dim FWidth As Integer
    Dim FInsideheight As Integer
    Dim InfoControles(100, 5) As Variant
    Dim NbControles As Integer
     
    Private Sub Form_Open(Cancel As Integer)
      Dim Ctrl As Control
      Dim prp As Property
      Dim i As Integer
      Dim OldWidth As Integer
      Dim OldHeight As Integer
     
     
      OldWidth = Me.InsideWidth
      OldHeight = Me.InsideHeight
     
      Me.InsideWidth = 10650
      Me.InsideHeight = 6585
     
      FWidth = Me.InsideWidth
      FInsideheight = Me.InsideHeight
     
      Erase InfoControles
     
     
      NbControles = 0
     
      For Each Ctrl In Me
        NbControles = NbControles + 1
      Next Ctrl
     
      i = 0
     
      For Each Ctrl In Me
        InfoControles(i, 0) = Ctrl.Properties("Name")
        InfoControles(i, 1) = Ctrl.Properties("ControlType")
        InfoControles(i, 2) = Ctrl.Properties("Left")
        InfoControles(i, 3) = Ctrl.Properties("Top")
        InfoControles(i, 4) = Ctrl.Properties("Width")
        InfoControles(i, 5) = Ctrl.Properties("Height")
        i = i + 1
      Next Ctrl
     
      Me.InsideWidth = OldWidth
      Me.InsideHeight = OldHeight
    End Sub
     
    Private Sub Form_Resize()
      Dim Ctrl As Control
      Dim NewFWidth As Integer
      Dim NewFInsideheight As Integer
     
      NewFWidth = Me.InsideWidth
      NewFInsideheight = Me.InsideHeight
     
      For Each Ctrl In Me
        For i = 0 To NbControles
          If InfoControles(i, 0) = Ctrl.Properties("Name") Then
            Ctrl.Properties("Left") = (InfoControles(i, 2) * NewFWidth / FWidth)
            Ctrl.Properties("Top") = (InfoControles(i, 3) * NewFInsideheight / FInsideheight)
            Ctrl.Properties("Width") = (InfoControles(i, 4) * NewFWidth / FWidth)
            Ctrl.Properties("Height") = (InfoControles(i, 5) * NewFInsideheight / FInsideheight)
          End If
        Next i
      Next Ctrl
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sauvegarder les paramètres des contrôles
    Par Regor dans le forum Excel
    Réponses: 2
    Dernier message: 21/11/2013, 21h28
  2. [Débutant] C# Comment accéder aux propriétés des contrôle sur un autre formulaire
    Par Claude_Azoulai dans le forum Visual Studio
    Réponses: 0
    Dernier message: 03/04/2013, 17h04
  3. [XL-2003] Sauvegarder les Paramètres des Contrôles
    Par YANN-56 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/09/2010, 18h18
  4. [c#/UserControl] Ajout des nouvelles propriétés
    Par layouni dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 10h02
  5. Propriétés des contrôles d'un état
    Par Miss Ti dans le forum IHM
    Réponses: 11
    Dernier message: 05/02/2007, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo