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

IHM Discussion :

Remplir un rectangle/textbox à coins arrondis [AC-2007]


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Par défaut Remplir un rectangle/textbox à coins arrondis
    Bonjour à tous,

    Tout d'abord, j'espère que j'écris ce post dans la bonne section du forum (oui je suis tout nouveau ici), veuillez m'en excuser sinon.

    Je cherche depuis quelques jours à entourer les textboxs présentes sur un état access d'un rectangle à coin arrondis (pourquoi faire compliqué...).
    Ces textboxs sont dynamiques et leur taille varie selon l'enregistrement qu'elles renvoient.


    Pour cela, je suis tombé sur un excellent tuto de ce site http://starec.developpez.com/tuto/ecriredessineretats/, et j'ai réussi à tracer ce fameux rectangle en utilisant la fonction roundrectangle proposée par l'auteur, à la section III-A2. Mes textboxs sont donc désormais entourées de rectangles à bords arrondis, et c'est déjà pas mal.

    Mon problème est que je souhaiterais remplir ce rectangle, avec un fond et une couleur bien particulière. J'ai donc essayé de modifier le code de ce tuto code en intégrant des "fillstyle" et "fillcolor" mais rien n'y fait.

    Je pense que le problème vient du fait que la la méthode employée ne trace pas des rectangles à proprement parler, mais plutôt un ensemble de lignes, c'est à dire que l'objet dessiné n'existe pas réellement.

    Quelqu'un aurait-il une piste ou une solution pour pouvoir remplir un tel rectangle, sachant que je veux conserver le fait qu'il dépende de la taille de mes textboxs?

    Merci beaucoup,

    Xavi

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Par défaut
    Rebonjour à tous,

    Pour info, voici le code que j'utilise (qui n'est ni plus ni moins que ce qui se trouve dans le tuto, n'arrivant toujours pas à insérer ce qui me permettrait de colorier le fond du rectangle, en ayant déja testé pas mal de variantes)

    Il est inséré dans une procédure évènementielle "au formatage" de mon état et fonctionne parfaitement.



    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Public Sub RoundRectangle(rpt As Report, ctrlDebut As Control, ctrlFin As Control, _
                              blnHautGauche As Boolean, blnHautDroit As Boolean, _
                              blnBasGauche As Boolean, blnBasDroit As Boolean, _
                              lngRayon As Long, lngDecalage As Long, lngColorTrait As Long)
        ' ======================================================================================
        ' Procedure     : Module :Routiones // Procédure : RoundRectangle
        ' DateTime      : 01/11/2007 18:11
        ' Auteur        : Starec - Philippe JOCHMANS - http://starec.developpez.com
        ' Description   : Cette procédure va permettre de réaliser un groupe de rectangles avec
        '                 pleins d'options
        '                 rpt : nom de l'état
        '                 ctrlDebut : nom du contrôle le plus en haut à gauche
        '                 ctrlFin : nom du contrôle le plus en bas à droite
        '                 blnBasHautGauche : si true, l'angle est arrondi et ainsi de suite pour les autres
        '                 lngRayon : rayon de l'arrondi
        '                 lngDecalage : décalage du cadre par rapport au ctrl de début et de fin
        '                 lngColorTrait : Couleur du trait
        '=======================================================================================
     
        ' ===== constante =====
        Const PI = 3.14159265359
     
        ' ===== déclaration des variables =====
        Dim lngTop As Long ' position top du rectangle
        Dim lngLeft As Long ' position left du rectangle
        Dim lngWidth As Long ' largeur du rectangle
        Dim lngHeight As Long ' hauteur du rectangle
     
     
        ' ===== affectation =====
        lngTop = ctrlDebut.Top - lngDecalage
        lngLeft = ctrlDebut.Left - lngDecalage
        lngWidth = ctrlFin.Left + ctrlFin.Width - ctrlDebut.Left + (lngDecalage * 2)
        lngHeight = ctrlFin.Top + ctrlFin.Height - ctrlDebut.Top + (lngDecalage * 2)
     
        ' ==== dessin des angles ====
        If blnHautGauche Then ' si le haut gauche est arrondi
               rpt.Circle (lngLeft + lngRayon, lngTop + lngRayon), lngRayon, lngColorTrait, PI / 2, PI
        Else
            rpt.Line (lngLeft, lngTop)-(lngLeft + lngRayon, lngTop), lngColorTrait
            rpt.Line (lngLeft, lngTop)-(lngLeft, lngTop + lngRayon), lngColorTrait
     
        End If
        If blnHautDroit Then ' si le haut droit est arrondi
        rpt.Circle (lngLeft + lngWidth - lngRayon, lngTop + lngRayon), lngRayon, lngColorTrait, 0, PI / 2
     
        Else
            rpt.Line (lngLeft + lngWidth - lngRayon, lngTop)-(lngLeft + lngWidth, lngTop), lngColorTrait
            rpt.Line (lngLeft + lngWidth, lngTop)-(lngLeft + lngWidth, lngTop + lngRayon), lngColorTrait
     
        End If
        If blnBasDroit Then ' si le bas droit est arrondi
            rpt.Circle (lngLeft + lngWidth - lngRayon, lngTop + lngHeight - lngRayon), lngRayon, lngColorTrait, PI + PI / 2, 0
     
        Else
     
            rpt.Line (lngLeft + lngWidth, lngTop + lngHeight - lngRayon)-(lngLeft + lngWidth, lngTop + lngHeight), lngColorTrait
            rpt.Line (lngLeft + lngWidth, lngTop + lngHeight)-(lngLeft + lngWidth - lngRayon, lngTop + lngHeight), lngColorTrait
        End If
        If blnBasGauche Then ' si le bas gauche est arrondi
            rpt.Circle (lngLeft + lngRayon, lngTop + lngHeight - lngRayon), lngRayon, lngColorTrait, PI, PI + PI / 2
        Else
            rpt.Line (lngLeft, lngTop + lngHeight - lngRayon)-(lngLeft, lngTop + lngHeight), lngColorTrait
            rpt.Line (lngLeft, lngTop + lngHeight)-(lngLeft + lngRayon, lngTop + lngHeight), lngColorTrait
        End If
     
        ' ==== dessin des cotés =====
        ' coté haut
     
        rpt.Line (lngLeft + lngRayon, lngTop)-(lngLeft + lngWidth - lngRayon, lngTop), lngColorTrait
        ' coté droit
        rpt.Line (lngLeft + lngWidth, lngTop + lngRayon)-(lngLeft + lngWidth, lngTop + lngHeight - lngRayon), lngColorTrait
          ' coté bas
        rpt.Line (lngLeft + lngRayon, lngTop + lngHeight)-(lngLeft + lngWidth - lngRayon, lngTop + lngHeight), lngColorTrait
         ' coté gauche
        rpt.Line (lngLeft, lngTop + lngRayon)-(lngLeft, lngTop + lngHeight - lngRayon), lngColorTrait
     
     
    End Sub
    ' Appel de la routine
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
     
     
     Call RoundRectangle(Me, Me.Étiquette58, Me.txtboxdescri_act, True, True, True, True, 200, 50, vbBlack)
     
    End Sub
    En espérant que ça puisse aider...

    Une bonne âme?

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour,

    en effet je ne pense pas que tu puisse remplir la forme que tu as déssiné et je te suggère un remplissage par morceaux.

    Au lieux de tracer un arc de cercle, trace un angle de la couleur que tu veux dans chacun des coins puis dessine 5 rectangles pleins (ou seulement 3) pour compléter le dessin.

    Donc tu traces
    • les 4 "angles" (1/4 de rond).
    • 1 rectangle entre l'arc supérieur gauche et supérieur droit. Ce rectangle à la hauteur du rayon de l'arc et la largeur du rectangle - 2 * rayon arc.
    • 1 rectangle entre l'arc supérieur droit et inférieur droit. Ce rectangle à la largeur du rayon de l'arc et la hauteur du rectangle - 2 * rayon arc.
    • 1 rectangle entre l'arc inférieur gauche et inférieur droit. Ce rectangle à la hauteur du rayon de l'arc et la largeur du rectangle - 2 * rayon arc.
    • 1 rectangle entre l'arc supérieur gauche et inférieur gauche. Ce rectangle à la largeur du rayon de l'arc et la hauteur du rectangle - 2 * rayon arc.
    • 1 rectangle insrcit qui à pour dimension (Hauteur du rectangle - 2 * rayon) arc et (Largeur du rectangle - 2 * rayon arc)


    Si la bordure et le remplissage sont de couleur différentes, il se peut que tu doives tracer le "rectange composite" de couleur d'abors puis les bordures ensuite pour que les bordures soient visibles.

    Et il faudra sans doutre mettre le texte après.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Les rectangles arrondis sont une succession de lignes et courbes, il ne s'agit donc pas d'une forme fermée qui peut-être remplie.

    Comme il est dit précédemment, il faut faire une succession de figures en utilisant ce qu'il y a dans le tuto comme ici pour les angles : http://starec.developpez.com/tuto/ec...etats/#LII-G-7

    Philippe

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Par défaut
    Bonjour à tous,

    Merci beaucoup pour ces précieuses informations!

    Je vais tenter d'adapter ça de suite et reviens vers vous dès que j'ai quelquechose qui marche.

    Merci encore,

    Xavi

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,


    Ces textboxs sont dynamiques et leur taille varie selon l'enregistrement qu'elles renvoient.
    Peux-tu montrer la partie de ton code qui te permet de récupérer la taille prise par la zone de texte à l'instant où elle est remplie ?

    Mon idée serait de superposer 2 contrôles :

    - la zone de liste, transparente
    - une image en arrière-plan

    et d'adapter les dimensions de l'image en fonction de celles de la zone de liste.

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

Discussions similaires

  1. rectangles avec coins arrondis
    Par ver_for dans le forum IHM
    Réponses: 2
    Dernier message: 10/11/2008, 14h44
  2. XAML : un rectangles avec les coins arrondies en haut.
    Par Archeone dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 09/11/2008, 22h11
  3. [Photoshop] Transformer un rectangle au coins arrondis
    Par stanley dans le forum Imagerie
    Réponses: 1
    Dernier message: 22/04/2008, 13h16
  4. Ihm aux coins arrondis
    Par nico31120 dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 25/11/2005, 07h55

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