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 6 et antérieur Discussion :

[VB6] Titre de colonne sur 2 lignes [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [VB6] Titre de colonne sur 2 lignes
    Bonjour,
    Je voudrais créer une entête de tableau qui tienne sur 2 lignes.
    Ex :
    Ma 1ere Ma 2ieme
    Colonne Colonne

    J’arrive à le faire en indiquant dans les propriétés de Mshflexgrid

    BackColorFixed = choix d’une couleur
    FontFixed = blabla
    FixedRows = 2
    Rows = 3
    FormatString ne permet de jouer que sur 1 seule ligne.

    Code
    .TextMatrix(0, 1) = " Ma 1iere"
    .TextMatrix(1, 1) = " Colonne "
    .TextMatrix(0, 2) = " Ma 2ieme"
    .TextMatrix(1, 2) = " Colonne "

    Mon problème est que si la Font est bien prise en compte pour la deuxième ligne, la couleur (backColorFixed) ne l’est pas ? Pourquoi est-ce qu’en ayant défini 2 lignes fixes, la font est bien prise en compte mais pas la couleur ? (la couleur n’est appliquée qu’a la première ligne)

    Tien par la même occase, quelqu’un sait-il comment mettre en surbrillance une ligne simplement lorsque le curseur passe dessus (comme ça se voit couramment sur internet) ? Non, non HighLight ne marche que pour une sélection, c.a.d qu’il faut clicker sur la ligne. Moi je voudrai ‘simplement’ mettre en surbrillance ce qui est survoler. Peut-etre c’est pas possible…

    Merci à tous ceux qui pourront m’apporter un peu d’aide…

  2. #2
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Pour le surlignement des lignes, il faut le gérer manuellement. Tu dois utiliser l'évènement MouseMove pour déterminer la ligne sur laquelle se trouve le curseur de la souris (se déduit du paramètre y).
    Puis deux choix s'offrent à toi :
    1. Colorer cette ligne et décolorer la ligne anciennement colorée.
    2. Sélectionner cette ligne et c'est la propriété HighLight qui gère le coloriage...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci Catbull,
    Pourrais tu l'illustrer par un exemple (je n'est jamais utiliser le MouseMouve).

  4. #4
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Le code qui suit est à placer dans la forme contenant ton FlexGrid. Dans le code le FlexGrid s'appelle MSFlexGrid1.
    Le Type Coordonnees permet de stocker les variables sous forme d'un couplet.
    La procédure MSFlexGrid1_MouseMove est appelée à chaque fois que l'utilisateur passe la souris sur le controle.
    La fonction GetCoordonnees permet de calculer les indices de la cellule survolée. Ce calcul se fait à l'aide des paramètres x et y.

    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
    Private Type Coordonnees
        Col As Integer
        Row As Integer
    End Type
     
    Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim Coord As Coordonnees
     
        Coord = GetCoordonnees(x, y)
        Debug.Print "(" & Coord.Row & "," & Coord.Col & ")"
    End Sub
     
    Private Function GetCoordonnees(x As Single, y As Single) As Coordonnees
        Dim R As Integer
        Dim SumR As Long
        Dim C As Integer
        Dim SumC As Long
     
        On Error GoTo ErrCoord
     
        C = MSFlexGrid1.LeftCol - MSFlexGrid1.FixedCols
        Do While x > SumC
            SumC = SumC + MSFlexGrid1.ColWidth(C)
            If x <= SumC Then Exit Do
            C = C + 1
        Loop
     
        R = MSFlexGrid1.TopRow - MSFlexGrid1.FixedRows
        Do While y > SumR
            SumR = SumR + MSFlexGrid1.RowHeight(R)
            If y <= SumR Then Exit Do
            R = R + 1
        Loop
     
        ' *** Gestion des lignes et colones fixes *** '
     
        If R < MSFlexGrid1.TopRow Then
            GetCoordonnees.Row = MSFlexGrid1.FixedRows - MSFlexGrid1.TopRow + R
        Else
            GetCoordonnees.Row = R
        End If
     
        If C < MSFlexGrid1.LeftCol Then
            GetCoordonnees.Col = MSFlexGrid1.FixedCols - MSFlexGrid1.LeftCol + C
        Else
            GetCoordonnees.Col = C
        End If
     
        Exit Function
     
    ErrCoord:
        GetCoordonnees.Row = -1
        GetCoordonnees.Col = -1
    End Function
    Après cela, tu peux enchainer sur le surlignement de tes cellules. Tu connais la ligne à surligner en invoquant Coord.Row dans MouseMove...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    Pour les lignes fixes, je ne sais pas pourquoi cela ne fonctionne pas correctement
    mais avec la propriété CellBackColor tu peux forcer la couleur de ta seconde ligne fixe

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Wouffff, SuperMerci CatBull. Heureusement que je t'ai demandé un bout de code. J'ai pas encore tester mais je pense que cela m'aurai pris trois jours si j'avais du le faire.
    Heu Francis, voila le code que j'ai utiliser mais Vb n'a pas l'air d'aimer :
    .CellBackColor(1, 1) = RGB(208, 240, 151)
    là je test juste sur 1 cellule, mais déjà là ça plante...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    non, VB n'aime pas
    CellBackColor n'est pas indicable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .row=1
    .col=1
    .cellbackcolor = RGB(208, 240, 151)

Discussions similaires

  1. Titre de colonne sur JXTable !
    Par fabred dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/06/2007, 16h35
  2. affichage des colonnes sur 2 lignes !
    Par DBA_doom dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/05/2007, 15h44
  3. [VB6] Création de colonnes sur ListView
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 28/05/2006, 16h20
  4. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  5. [VB.NET] DataGrid : titre des colonnes sur deux lignes
    Par Lahouari dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/12/2004, 14h44

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