Est - il possible de lier un tableau 2 dim , avec un datagrid, si comment? :cry:
un petit bout de code serait le bien venu
Merci ;)
Version imprimable
Est - il possible de lier un tableau 2 dim , avec un datagrid, si comment? :cry:
un petit bout de code serait le bien venu
Merci ;)
Oui il est tout a fait possible de le faire. Mais il faut evidement savoir ce que tu veux faire pour pouvoir vraiment te proposer un code. Ou alors si tu as commencer un toi meme (et ce serais plus facile pour toi comme pour nous) fait nous voir.Citation:
Envoyé par thierry007
Non encore rien de fait.
:) Le but :
Dimentionner un tableau / structure du genre
le lier a une datagrid ( chaque field a une colonne/ligne )Code:
1
2
3 dim MonTableau1(200,10) dim MonTableau2(200,35) dim MonTableau3(200,15)
En fait je cherche une idée ou solution pour remplir une datagrid et effectuer des calculs dedans ( genre saisie d'un bon de commande ou facture ), mais voyager dans la datagrid avec les curseurs et dans la première colonne mettre du code pour aller chercher des infos dans une base de données
Pourquoi passe par un tableau (encore de la memoire d'utiliser inutilement) alors que tu peux le faire directement depuis le datagrid ??Citation:
Envoyé par thierry007
comment le faire alors
il faut qu'il y ai un nombres ligne vides existante dans le datagrid, pour ne pas passer par l'ajout de ligne
Une idée :oops:
Bon la j'ai l'impression d'etre aller un peut trop vite.Citation:
Envoyé par thierry007
Dit moi que veux tu faire exactement. Est que tu veux pourvoir ajouter "manuellement" une nouvelle ligne dans le DataGrid, ou alors modifier une ligne du DataGrid ??
comme j'ai écri plus haut, le but serait d'avoir une datagrid dans laquelle je puisses ajouter / mofifier des données sans devoir aller cliqué sur un bouton ajouter : en fait avoir une centaine d'enregistrement vide que peux modifier a ma guise . l'exemple le plus proche de ce que je veux faire est une feuille excel, mais mois cela serait limité a 10 col sur 100 ligne. lorsque j'ai mis des données dans la grille je valide et transfert les records dans une db centralisée
:roll: suis-je assez clair?
Pour ce que tu veux faire au vu de ceci
je te conseille d'utiliser le MSFlexGrid (Microsoft FlexGrid Control 6.0, MSFLXGRD.OCX) . Avec celui la ce sera possible et meme plus facile. Je doute que cela soit possible a faire avec le DataGrid.Citation:
Envoyé par thierry007
Si tu es pret pour cette nouvelle orientation je peux te donne un coup de main avec du code et des orientations.
c'est possible, mais c'est tres tres chiant à gérer
voir dans l'aide en ligne les évenements
-UnboundAddData
-UnboundDeleteRow
-UnboundReadData
-UnboundWriteData
ansi que la proprièté
-DataMode
Je ne savais pas que ces evenements et propriete existaient. Et d'ailleur je n'arrive pas a y avoir acces. J'utilise le Microsoft DataGrid control 6.0 (OLEDB) (MSDAGRD.OCX)Citation:
Envoyé par Delbeke
la vraiment je croit que
Citation:
Envoyé par Delbeke
Bonjour Sovo,
DBGrid et DataGrid sont deux contrôles bien différents.
Les événements et propriété signalés par DelBeke existent bien et concernent le contrôle DBGrid.
Ceci étant dit, je salue DelBeke, qui m'a également appris une chose que j'ignorais, habitué moi aussi à utiliser le contrôle DataGrid..
On en apprend à tout âge.... Merci DelBeke
Bonjour JMF,
Ouf j'ai eu chaud. Je ne savais qu'il utilisais le DBGrid (ne l'ayant pas fait). Et puis je n'ai jamais utilise ce control donc... Tout comme toi j'utilisais le DataGrid, mais depuis quelque semaine le MSFlexGrid de seduit de par sa flexibilite.
Un prété pourr un rendu jmf :) tu m'as bien apris le TextMatrix
Bonne soirée a toi.
La je suis preneur si tu as un bout de codeCitation:
Envoyé par sovo
Il faut savoir que dans l'application que je veux développer je vais travailler en Terminal Server, donc l'appli va tourner sur le serveur, c'est pour cela que je veux effectuer les opération de saisie / modif en mémoire, puis seulement les envoyées dans la db générale ( ou une autre idée :oops: )
Bon voila.
Citation:
Envoyé par thierry007
Comme tu l'aura remarque la propriete TextMatrix est la solution a ton probleme (Un merci implicite a JMF, car c grace a lui que j'ai fait la decouverte de cette propriete de du MSFlexGrid qui est super genial).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 'MSF est le controle MSFlexGrid MSF.FixedCols = 0 MSF.FixedRows = 1 MSF.Rows=101 'Pour creer 100 ligne vide dans ton MSFlexGrid MSF.Cols=10 'Pour creer 10 Colone vide dans ton MSFlexGrid 'Pour remplir le MSFlexGrid : La propriete TextMatrix Dim FlexRow as Integer Dim FlexCol as Integer For FlexRow = 1 to MSF.Rows - 1 For FlexCol = 0 to MSF.Cols -1 MSF.TextMatrix(FlexRow,FlexCol) = "Cellule " & FlexRow & FlexCol Next Next
Test effectuer, mais je ne peux écrire directement dans une cellule, je peux la remplire dans le code mais pas modifier une cellule directement dans l'MSF quand le prg est executé
Ou alors y qq chose que je ne saisis pas :oops:
Si tu veux modifier le contenu d'une cellule alorsCitation:
Envoyé par thierry007
PS: tout ceci ce passe en mode ExecutionCode:
1
2 'Pour mettre "www.developpez.com" dans la cellule (59,6 : Ligne, Colone) MSF.TextMatrix(59,6) = "www.developpez.com"
Je crois ne pas m'être bien exprimé:
j'execute le programme , il m'affiche la grille, je click sur une cellule et je veux la modifier , ou mettre qq chose dedans 8O
oups , sa marche pas :(
Peut être pas la meilleur solution mais :mrgreen:
TextEntrer > TextBox Appearance = 0 (Flat), Multiline = FalseCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub Form_Load() TextEntrer.Height = MSFlexGrid1.CellHeight End Sub Private Sub MSFlexGrid1_RowColChange() If MSFlexGrid1.Row <> 0 Then TextEntrer.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col) + 30 TextEntrer.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row) + 15 TextEntrer.Width = MSFlexGrid1.CellWidth + 15 TextEntrer = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) TextEntrer.SelStart = Len(TextEntrer) TextEntrer.Visible = True: TextEntrer.SetFocus End If End Sub Private Sub TextEntrer_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) = TextEntrer TextEntrer.Visible = False End If If KeyAscii = 27 Then TextEntrer.Visible = False End Sub
La je ne croit pas qu'il ne sera pas possible de passer par les propriete.
Voila comment je fait ca
Soit tu passe par un InputBox qui recupere le texte que tu veux entrer et le fait a ta place
Soit tu le fait losrque l'utilisateur entre au clavierCode:
1
2
3
4
5
6
7
8 Dim col as integer, row as integer Private Sub MSF_Click() 'ou DblClick c comme tu veux col = MSF.MouseCol row = MSF.MouseRow MSF.TextMatrix(row, col) = InputBox("Entrer un texte", "Text") End Sub
Perso j'utilise la premiere methode (sauf que j'utilise plutot une form personalise) bien que la deuxieme est plus proche de la logique.Code:
1
2
3
4
5
6 Private Sub MSF_KeyPress(KeyAscii As Integer) col = MSF.MouseCol row = MSF.MouseRow MSF.TextMatrix(row, col) = MSF.TextMatrix(row, col) + Chr(KeyAscii) End Sub