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 :

Msflexgrid: Detecter un redimensionnement.


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut Msflexgrid: Detecter un redimensionnement.
    Bonjour,
    J'ai un msflexgrid sur lequel l'utilisateur peut elargir les colonnes ou les lignes. Comment detecter cet evenement ? je n'ai pas trouvé d'evenement on resize ou un truc du genre dans les propriétés du MSFlexgrid.
    Merci d'avance.
    VINCENT

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Effectivement il n'y a pas d'évenement lors du redimentionnement de colonne.
    J'utilise un tableau avec la largeur des colonnes et lors d'une intervention sur le grid je compare le tableau au largeurs des colonnes.C'est le seul moyen que j'ai trouvé.
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut
    Re,
    Merci pour ta réponse meme si elle m'arrange pas, j'avais essayé d'utiliser la comparaison comme toi mais je me suis heurté a un petit probleme du genre : j'affecte la largeur à 516 quand je print la valeur j'ai 520 donc mon test detecte un changement alors qu'il n'y en a pas eut. On dirait qu'il y a un arrondi sur la valeur.
    @+

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Ces valeurs sont en Twips, donc des multiples de 15 (ou de 20, selon la résolution d'écran). Donc, une valeur comme 516 sera automatiquement ajustée à la valeur valide la plus proche.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par jvv 64
    Re,
    Merci pour ta réponse meme si elle m'arrange pas, j'avais essayé d'utiliser la comparaison comme toi mais je me suis heurté a un petit probleme du genre : j'affecte la largeur à 516 quand je print la valeur j'ai 520 donc mon test detecte un changement alors qu'il n'y en a pas eut. On dirait qu'il y a un arrondi sur la valeur.
    @+
    Bonsoir,
    Mais tu doit initialiser ton tableau après l'affichage, dans l'évenement ActiveForm
    Et tu doit l'initialiser sur les largeurs colonnes et pas sur des variables qui comme tu le précise s'adaptes en fonction des Twips comme le dit ZaZaraignée.
    A+

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 137
    Par défaut
    Moi je propose ceci, l'ennuieux, quand le nombre de ligne (plus de 500) devient conséquant, sa ramme un peu.
    Sur un Form, un MSFlexGrid et un Label
    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
    Option Explicit
    Dim Hrow() As Integer, WCol() As Integer
    Dim T As Integer
    Private Sub Form_Load()
    Timer1.Enabled = False
    Timer1.Interval = 250
    ReDim Hrow(MSFlexGrid1.Rows)
    ReDim WCol(MSFlexGrid1.Cols)
    MSFlexGrid1.AllowUserResizing = flexResizeBoth
    For T = 0 To MSFlexGrid1.Rows - 1
     Hrow(T) = MSFlexGrid1.RowHeight(T)
    Next T
    For T = 0 To MSFlexGrid1.Cols - 1
     WCol(T) = MSFlexGrid1.ColWidth(T)
    Next T
    Label1.AutoSize = True
    End Sub
     
    Private Sub MSFlexGrid1_LostFocus()
    Timer1.Enabled = False
    End Sub
     
    Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    If MSFlexGrid1.MouseRow = 0 Or MSFlexGrid1.MouseCol = 0 Then
     Timer1.Enabled = True: Label1 = "True"
     Else
     Timer1.Enabled = False: Label1 = "False"
    End If
    End Sub
     
    Private Sub Timer1_Timer()
    If MSFlexGrid1.MouseCol = 0 Then VerifHrow
    If MSFlexGrid1.MouseRow = 0 Then VerifWcol
    End Sub
     
    Public Sub VerifHrow()
    For T = 0 To MSFlexGrid1.Rows - 1
     If Hrow(T) <> MSFlexGrid1.RowHeight(T) Then
      Label1 = "ligne " & CStr(T) & " modifier, nouvelle hauteur " & MSFlexGrid1.RowHeight(T)
      Hrow(T) = MSFlexGrid1.RowHeight(T): Exit For
     End If
    Next T
    End Sub
    Public Sub VerifWcol()
     For T = 0 To MSFlexGrid1.Cols - 1
      If WCol(T) <> MSFlexGrid1.ColWidth(T) Then
       Label1 = "Colonne " & CStr(T) & " modifier, nouvelle largeure " & MSFlexGrid1.ColWidth(T)
       WCol(T) = MSFlexGrid1.ColWidth(T): Exit For
      End If
     Next T
    End Sub
    Salut
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Une petite variante à la suggétion de ProgElect, plutôt que d'employer un Timer, exécuter sa routine uniquement quand l'application est fermée, ou que la fenêtre perd le focus, ce serras en tout les cas moins lourd en temps.

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

Discussions similaires

  1. Redimensionner fenêtre et MSFlexgrid en même temps
    Par LeBob14 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/05/2009, 11h32
  2. Detection arret de windows
    Par philippe30 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 21/09/2002, 19h41
  3. redimensionnement d'une JWindow
    Par mbp566 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/08/2002, 04h41
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 16h40
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 23h01

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