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

VB.NET Discussion :

[VB2008] Utilisation d'une richtextbox?


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 14
    Points
    14
    Par défaut [VB2008] Utilisation d'une richtextbox?
    Bonjour à tous,

    Dans le cadre mon stage je dois développer une application qui, entre autres, doit permettre à partir d'informations sur plusieurs tâches à effectuer (son libellé, sa durée, le nombre d'agents l'effectuant, etc), de dessiner un emploi du temps quotidien de manière dynamique.
    Pour cela, j'ai d'abord crée un panel dans mon windows form, et lors du clic sur un jour particulier (J1, J2,...,J30...), je crée un objet graphique g, puis dessine à la main ma grille. Avec des requêtes SQL je récupère les informations nécessaires pour pouvoir les mettre en forme. Après des heures de bataille cette partie fonctionne.

    Si je poste ici aujourd'hui, c'est pour un autre problème : la RichTextBox, Ô doux mot dont je n'avais jamais entendu parler On m'a en effet conseillé d'afficher les tâches en utilisant cet objet plutôt qu'en dessinant des rectangles puis des strings par dessus (cela me semble un peu hardu aussi...). Seulement voilà... je n'ai aucune idée du fonctionnement de la richtextbox, enfin si, une vague idée, mais toute la documentation que j'ai trouvée sur internet parle d'une textbox ouverte à part et dans laquelle on va taper du texte puis le traiter...
    Impossible pour moi de trouver comment créer une petite textbox toute simple incluse dans mon panel, de la dimensionner comme je veux, de lui donner des coordonnées précises, et surtout de les supprimer lors d'un clic sur un nouveau jour...

    Ce message est peut-être un peu long, et je m'en excuse platement , mais je pense qu'expliquer ce que je veux faire au final rendra mon problème plus clair..

    Voici une partie de mon code, je ne mets pas tout car il est assez long et barbare notamment dans les requêtes SQL :
    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
     
     Private Sub listeJours_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles listeJours.SelectedIndexChanged
     
     
            'Création du stylo et du graphique
            Dim g As Graphics = Panel1.CreateGraphics
            g.Clear(Panel1.BackColor)
     
            Dim mypen As New Pen(Color.Black, 2)
     
    'Requêtes SQL et récupération des données (non affiché)
    '*******************************'
     g.FillRectangle(New SolidBrush(Color.FromArgb(255, 255, 204, 0)), 10, 30, 90, 25) 'rectangle orange phase
            g.DrawString("Phase", New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 10, 35)
            g.DrawString(jourGamme, New Font("Arial", 15, FontStyle.Bold), Brushes.Black, 10, 2)
            g.DrawString("Jour Give : " & jourGive, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 1100, 2)
            g.FillRectangle(New SolidBrush(Color.FromArgb(255, 153, 204, 255)), 10, 55, 90, 25) 'rectangle bleu équipe
            g.DrawString("Equipe", New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 10, 60)
            g.FillRectangle(New SolidBrush(Color.FromArgb(255, 204, 153, 255)), 100, 30, 1190, 50) 'rectangle violet phase et heures
            'Ecriture des heures
            Dim abs As Integer = 0
            Dim heure As Integer = 5
            For abs = 100 To 1200 Step 100
                g.DrawString(heure & "h", New Font("Arial", 10, FontStyle.Regular), Brushes.Black, abs, 65)
                heure = heure + 1
            Next
     
     'création des points qui définissent le contour du tableau
    '--> Simple "dessin"
            Dim point1 As New Point(10, 30)
            Dim point2 As New Point(10, 530)
            Dim point3 As New Point(1290, 30)
            Dim point4 As New Point(1290, 530)
            Dim ContourTab As Point() = {point1, point2, point4, point3, point1}
            g.DrawLines(mypen, ContourTab)
            g.DrawLine(mypen, 10, 55, 1290, 55) 'Ligne en dessous de phase
            g.DrawLine(mypen, 10, 80, 1290, 80) 'Ligne en dessous d'équipe
            g.DrawLine(mypen, 100, 30, 100, 1500) 'Ligne verticale séparateur phase/équipe
     
    'dessin de la grille
    Dim abscisse As Integer = 100
            Dim ordonnée As Integer = 100
            For abscisse = 100 To 1200 Step 100
                g.DrawLine(New Pen(Color.Gray, 1), abscisse, 55, abscisse, 530)
            Next
            For ordonnée = 130 To 500 Step 50
                g.DrawLine(New Pen(Color.Gray, 1), 10, ordonnée, 1290, ordonnée)
            Next
     
    '-----Partie où intégrer les richtextbox------------
     'Libellé de l'unité de travail à gauche dans la colonne équipe
                g.DrawString(ligne.LIB_UT, New Font("Arial", 11, FontStyle.Bold), Brushes.Black, 50, 100 + 50 * (numLigne + nbCreneau - Reste))
                'Tracer le rectangle
                g.FillRectangle(Brushes.Beige, 100 + coordonnée, 80 + 50 * (numLigne + nbCreneau - Reste), 100 * ligne.DUREE_DET_TRAV, 50)
                g.DrawString(ligne.LIB_DET_TRAV, New Font("Arial", 9, FontStyle.Bold), Brushes.Black, 100 + coordonnée, 80 + 50 * (numLigne + nbCreneau - Reste))
    Voici ce que j'ai commencé à taper hier, mais c'est un peu du à tatons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
     Dim Tache As New RichTextBox
     
                Tache.Font = New Font("Arial", 8, FontStyle.Regular)
                Tache.Text = Trim(ligne.LIB_DET_TRAV) 'libellé de la tache
                Tache.SelectionProtected = True
                Tache.Parent = Panel1
                Tache.CreateGraphics.DrawRectangle(mypen, 100 + coordonnée, 80 + 50 * (numLigne + nbCreneau - Reste), 100 * ligne.DUREE_DET_TRAV, 50)
                Tache.SelectionAlignment = HorizontalAlignment.Center
                Tache.AllowDrop = False
    Mais bon, ca bloque, ca bloque ! Tout ça pour poser directement les questions suivantes :
    -comment dimensionner précisément une richtextbox ?
    -comment lui donner des coordonnées précises ?
    -comment parcourir un ensemble de richtextbox afin de pouvoir les supprimer dynamiquement ?

    Merci d'avance pour vos réponses, bonne journée à tous !

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    comme tous les controles

    .Top
    .Left
    .Width
    .Height

    sinon il existe des controles de placement, le tablelayoutpanel par exemple permet de mettre des controles en lignes et en colonnes, il suffit alors de docker le controle à l'intérieur d'une (ou plusieurs) case

    par contre le richtextbox est un textbox qui permet de faire du formatage et de la couleur, si tu n'en as pas besoin un simple textbox suffira
    sans l'interface de mofification comme les boutons dans word un richtextbox ne peut pas faire grand chose


    après pour les parcourir, tu peux boucler sur leparent.controls.oftype(of richtextbox)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Pour le formatage, je vais devoir afficher le libellé de la tâche dans ma textbox, et il ne faut pas que ça dépasse, voire que ça change la taille de la police à partir d'un certain nombre de caractère pour que cela reste lisible... Mais après tout, je dois pouvoir faire cela avec un simple textBox en faisant un test direct sur la longueur de la chaine avant de l'ajouter.

    En tout cas, merci beaucoup, je vais essayer ça sur le champs !

Discussions similaires

  1. Puis je utiliser une richtextbox dans ce cas ?
    Par Attila54 dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/04/2011, 09h29
  2. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11
  3. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23
  4. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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