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
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
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+
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.
@+
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.
Bonsoir,Envoyé par jvv 64
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+
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
Salut
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
: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 ← ← 👈
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.
Partager