Bonjour,
Je suis en train d'utiliser lamegrid dans une application, (après avoir fait des essais avec flexgrid et datagrid) .
Lamegrid me parait le plus adapté a mes besoins.
mais j'ai juste un problème.
Lors de la saisie dans une cellule et en appuyant sur enter (13) , automatiquement on passe a la cellule inferieure, et ca s'arrête en bas de tableau.
j'ai essayer de jouer avec le PreviewKeyDown en interceptant le e.code mais la encore même si j'arrive a forcer un sens de déplacement. a chaque fois j'ai l'exécution de ce (je veut bien aller ou tu veux mais m'en fout je passe quand même a la ligne suivante avant de faire quoique ce soit.)
j'ai aussi fait ca. mais ca ne me convient que moyen car graphiquement on ois un aller retour.. ca fait trés bidouille
'Avant validation
Dim OldRow As Integer
Dim OldCol As Integer
Private Sub Grid1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Grid1.PreviewKeyDown
OldRow = Grid1.CurrentRow
OldCol = Grid1.CurrentCol
End Sub
Private Sub Grid1_KeyUp(sender As Object, e As KeyEventArgs) Handles Grid1.KeyUp
Grid1.CurrentCol = OldCol
Grid1.CurrentRow = OldRow
End Sub
si un de vous a une idée?
A voir également:
Lamegrid : interdire de Déplacer la sélection après validation
j'utilise shadows pour occulter mes events me gourreraije?)
Ca n’a strictement rien à voir.
Shadows sert lors d’un héritage. Il masque un attribut de la classe mère dans la classe fille
Sauf erreur de ma part tu n’as pas dérivé.
e.Handle = true sert à stopper un comportement par défaut.
Par exemple quand on appuie sur la touche tab, ça passe au contrôle suivant.
Tu pourrais vouloir obtenir un autre résultat à l’appui de cette touche.
Dans le KeyDown ou le previewKeyDown/Press de ton contrôle tu codes ce nouveau comportement, mais si tu ne lui dit pas « ne fais rien d’autre, j’ai géré le truc à ta place » et bien ça donnera quand même le focus au contrôle suivant.
je vais tout recommencer a zero et ton programme prendra 2 mois de plus,
Alors je vais être trash, si ton projet est bien codé c’est l’affaire de quelques jours.
Est s’il est mal codé, c’est probablement 99% de la faute à Microsoft.
.Net, C’est d’abord C#: un langage tout objet, adapté au pattern MVC (voire MVVM en WPF, mais c’est venu après).
Cependant Microsoft a craint de perdre la communauté de développeurs amateurs (au bon sens du terme), du coup, ils ont crée un « skin » de C# à la mode VB et y on inclus quelques tolérances.
D’une part ça n’a pas pris assez peu de codeur VB6 sont passé à .Net en 21 ans..... Et beaucoup de ceux qui y sont passé codent comme en VB6....
Si tu as écrit tes classes Modèle et tes classe Contrôleur à peu près bien adapter une vue en Winform, ASP, WPF, SilverLight, UIP et j’en passe est très rapide du moment où on connait un peut le « langage » de l’interface.
Pour te convaincre de ça, tu peux chercher dans mes sources une calculatrice, mon but était de développer un bon contrôleur, mais j’ai fait 3 interfaces toutes simples avec une techno chacune.
Bonjour
- LameGrid n'est plus mis à jour depuis 2008 ou 2009 ( presque 12 ans au moins : c'est une éternité en informatique ) et en plus la version VB Net de LameGrid a été développée avec le Net FrameWork 1.1 ( on en est au 4.8 actuellement )
- en VB Net tu as les ListViews ou les DataGridViews ( flexgrid c'était VB 6 je crois et datagrid de VB Net a été remplacé par DataGridview ) . Et les DataGridViews sont "bindables" et supportent les liaisons avec les bases de données .
Comme dit Whismeril ( que je salue ) sans code difficile de t'aider ( surtout que la Doc de LameGrid est assez succincte )
Trouvé sur un forum
LameGrid est distribué en Freeware. Vous pouvez donc l'utiliser à votre guise pour vos programmes, j'essaierai d'être réactif pour la correction des bugs éventuels.
Le contrôle LameGrid est fourni en l'état. L'utilisateur utilise LameGrid à ses risques et périls, sans garantie d'aucune sorte de la part de l'auteur. L'auteur n'est responsable d'aucun dommage subi par l'utilisateur pouvant résulter de l'utilisation ou de la distribution du contrôle LameGrid. De la même façon, l'auteur n'est en aucun cas responsable d'une quelconque perte de revenus ou de profit, ou de données, ou de tous dommages directs ou indirects, susceptibles de survenir du fait de l'utilisation du contrôle ou pour la raison que celui-ci serait inopérant, quand bien même l'auteur aurait été averti de la possibilité de tels dommages.LameGrid est gratuit pour une utilisation privée, commerciale ou éducative (incluant les organisations à but non lucratif). L'utilisation du contrôle LameGrid vaut acceptation par l'utilisateur des termes de la licence ci-dessus.
Bonjour,
j'en suis bien conscient, et comme je l'ai dit j'ai essayé les autres types de grille et pour des raisons diverses ne me convenait pas.
j'ai choisi lamegrid car j'avais besoin de pouvoir affecter des "styles" et pas trouvé sur le datagrid view. le flexgrid effectivement il passait mal quand je testait sur d'autres machines donc j'ai viré. en fait le code sur le keydown finalement fonctionne... mais seulement sur mon clavier "émulé".. des que je passe sur un clavier reel.. ca ne vas plus.
voila le code pour info (le select case ne sert a rien mais je garde pour plus tard)
Private Sub Grid1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Grid1.PreviewKeyDown
'et on se les met de coté
OldRow = Grid1.CurrentRow
OldCol = Grid1.CurrentCol
End Sub
Private Sub Grid1_KeyUp(sender As Object, e As KeyEventArgs) Handles Grid1.KeyUp
With Grid1
'on remet la case a son ancienne position
.CurrentCol = OldCol
.CurrentRow = OldRow
'si c'est un chiffre on formate l'affichage
If IsNumeric(CellText(Grid1.CurrentRow, Grid1.CurrentCol)) Then
CellText(Grid1.CurrentRow, Grid1.CurrentCol) = FormatNumber(CellText(Grid1.CurrentRow, Grid1.CurrentCol), My.Settings.PrécisionVirgule)
End If
Select Case e.KeyCode
'Case 8 'backspace
'.Text = Strings.Left(.Text, (Len(.Text) - 1))
'Case 46 'suppr
'.Text = ""
Case 13 'Entrée
'on teste les extrémitées, si on peu encore avancer.... ben la on avance
'par contre si on est a un bout du tableau alors on change de ligne de colonne et on repasse en fin ou bout de tableau
If My.Settings.SensDeplacement = 1 Then
'On est en mode vers la droite donc on avance de colonne en colonne, quand on arrive au bout on descend d'une ligne et on revient en colonne 1
'si on est pas sur la derniere colonne on avance d'un
If .CurrentCol <> ColsCount - 1 Then
.CurrentCol = .CurrentCol + 1
Else
If .CurrentRow <> RowsCount - 1 Then 'on est pas en bas
.CurrentRow = .CurrentRow + 1 'on descend
Else 'on est en bas on vas a la cellule 1,1
.CurrentRow = 1
End If
.CurrentCol = 1 'et On se met a la premiere colonne
End If
ElseIf My.Settings.SensDeplacement = 2 Then
'On est en mode vers le bas donc on avance de ligne en ligne, quand on arrive au bout on decale d'une colonne et on revient en ligne 1
'si on est pas sur la derniere colonne on avance d'un
If .CurrentRow <> RowsCount - 1 Then
.CurrentRow = .CurrentRow + 1
Else
If .CurrentCol <> ColsCount - 1 Then 'on est pas en bas
.CurrentCol = .CurrentCol + 1 'on descend
Else 'on est en bas on vas a la cellule 1,1
.CurrentCol = 1
End If
.CurrentRow = 1 'et On se met a la premiere colonne
End If
ElseIf My.Settings.SensDeplacement = 3 Then
'BlabBlaBla si t'a pas compris tu comprendra jamais
If .CurrentCol <> 1 Then
.CurrentCol = .CurrentCol - 1
Else
If .CurrentRow <> 1 Then
.CurrentRow = .CurrentRow - 1
Else
.CurrentRow = RowsCount
End If
.CurrentCol = ColsCount - 1
End If
ElseIf My.Settings.SensDeplacement = 4 Then 'pas obligé mais plus prore
If .CurrentRow <> 1 Then
.CurrentRow = .CurrentRow - 1
Else
If .CurrentCol <> ColsCount - 1 Then
.CurrentCol = .CurrentCol + 1
Else
.CurrentCol = 1
End If
.CurrentRow = .RowsCount - 1
End If
End If
End Select
End With
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Soit t’as pas essayé, soit c’est pas possible avec ce contrôle personnalisé que je ne connais pas.
Si tu es dans le premier cas, quand tu veux te substituer à un comportement d’un contrôle, il faut dire au contrôle de ne pas faire son comportement par défaut.
j'ai choisi lamegrid car j'avais besoin de pouvoir affecter des "styles" et pas trouvé sur le datagrid view
Passe en WPF, tu pourras styler tout ce que tu veux comme tu veux
j'utilise shadows pour occulter mes events me gourreraije?)
passer en WPF j'y ai pensé mais si je dit a mon patron. "tu sait le truc qui te convient , ben je vais tout recommencer a zero et ton programme prendra 2 mois de plus, ah oui me faudrai une petite formation en plus". je crains que la réponse ne soit pas celle espérée
Bonjour, effectivement j'arrive du monde de VB6 et le .net est apparu pendant que j'étais sur un projet. j'ai découvert la POO a ce moment mais a l'époque il y avais peu de monde pour m'aider et il est clair que j'ai fait un mix. pas de formation, du coup j'avoue ne pas toujours comprendre pourquoi et comment coder.. et me contente de "ca marche je garde comme ca".
effectivement suis amateur, mais on ne peu pas être pro partout.
je vais jeter un oeil a tes sources.
Pour ce qui est de e.Handle = true je suppose que ca ne fonctionne que sur les "KeyEventArgs"
j'ai testé un peu partout mais ca marche pas. (j'ai conscience que cela vient probablement du lamegrid, mais je viens encore de faire des tests de comparaison entre lamegrid et datagridview et rien que le temps de création d'un tableau me conforte dans mon choix de garder lamegrid.