frezz13
Messages postés15Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention 2 août 2010
-
19 mai 2007 à 22:13
frezz13
Messages postés15Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention 2 août 2010
-
21 mai 2007 à 19:52
Bonjour,
Sous VB6, je désire réaliser une application ou je puisse ouvrir plusieurs msflexgrid dans lesquelles des données serait placées à partir de fichiers (en format CSV) préalablement enregistré. (un peu comme avec excel)
Donc j'ai commencé mon projet par crée une Form contenant un Msflexgrid le tout dans un MDI.
Un menu (Commondialog) dans le MDI permet la gestion de mes fichiers et j'ouvre mes Form dynamiquement avec la commande set FrGrid = New Grid et FrGrid.show
Mon probleme :
Quand j'ouvre un fichier, mes données CSV sont bien placé dans ma premiere feuille, mais quand j'ouvre un autre fichier, la deuxieme feuille apparait avec ma Msflexgrid mais vide. Les données sont alors placées dans ma premiere Form et non pas dans la deuxieme.
Je pense que cela doit ce gérer avec la commande Screen.ActiveForm ou Screen.ActiveControl mais je ne sait pas trop comment l'employer.
J'éspere être clair dans la description.
Si vous pouviez me donner une piste ou un lien ce serait sympa.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 mai 2007 à 22:22
Bonsoir,
pas clair, là...
Définis-nous ce qu'est Grid (ta première Form ou la grille se trouvant sur ta première Form .)
Si Grid est le nom de ta première Form, quel est le nom de la grille qui s"y trouve ?
Bref ...
Nous avons besoin d'y voir clair et, pour celà :
- du nom de ta 1ère Form
- du nom des contrôles que tu y a placé (et leur type), rn précisant celui qui reçoit tes données.
Sinon : envoir-nous une boule de crystal (elle sera bienvenue)
frezz13
Messages postés15Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention 2 août 2010 19 mai 2007 à 23:14
Bonsoir,
Je veux tellement être clair que ca devient
Voici un bout du code:
Public Sub Open()
'Appelle du fichier à ouvrir
With CommonDialog1
.DialogTitle = "Ouvrir"
.CancelError = False
.Filter = "Tous les fichiers (*.dat)|*.dat"
.ShowOpen
If Len(.FileName) = 0 Then
Exit Sub
End If
sFile = .FileName
End With
'------------------------ Jusque là, c'est classique----
' je crée ma Form dynamique avec une grille dedans je lui donne un nom dans son Caption avec appelle de la procedure :
LoadNewGrid
*** En fait c'est à ce niveau que ça coince***
' la procedure qui suit, permet de charger mon fichier dans la grille
Ouvre_Base (sFile) ' je charge mon fichier dans la grille
' Pour ma premiere Form c'est OK, mais quand j'ouvre un autre fichier et que la deuxieme form apparait, mon fichier ce copie à la place du premier. la seconde form restant vierge.
(Je suppose peut-être à tord qu'aillant le focus mes données se place automatiquement dans la grille de la form en cours ???)
End Sub
'-------------------------
Public Sub LoadNewGrid()
Static lgridtCount As Long
Dim FrGrid As Grid
lgridtCount = lgridtCount + 1
set FrGrid = New Grid
FrGrid .Caption = "Grid " & lgridtCount
FrGrid .Show
End Sub
'-------------------------
Donc ma premiere form s'appelle GRid 1 (incrementé par lgridtCount)
( je repere mes Forms grace au nom des captions)
'-------------Utilisation d'une Grille SCgrid ---------
Public Function Ouvre_Base(FicBase As String)
Dim sLigne As String
Dim sDonnees() As String
Dim I As Long, nbl As Long
Dim f As Integer
Dim nCol As Long
sSeparateur = ";"
On Error GoTo ErrHandler
Grid.SCGrid1.Redraw = False
Grid.SCGrid1.Visible = False
Grid.SCGrid1.ClearCol (Cols): Grid.SCGrid1.ClearRow (Rows) 'efface la grille
Me.LabNomFic.Caption = ""
Me.LabNomFic.Caption = Right(FicBase, Len(FicBase) - InStrRev(FicBase, "", -1, 1)) ' extrait le nom du fichier
If FicBase <> "" Then
FicBase = App.Path & "" & Me.LabNomFic.Caption
nbl = 1
' Compte le nombre de lignes
f = FreeFile
Open FicBase For Input As #f
While Not EOF(f)
Line Input #f, sLigne
nbl = nbl + 1
Wend
Close #f
Grid.SCGrid1.Rows = nbl - 1
' Lecture de 1 ligne pour calculer le nombre de colonnes
nCol = 10 '10 colones
nbl = -1
' Remplissage du flexgrid
f = FreeFile
Pb = 0
Open FicBase For Input As #f
Do While Not EOF(f)
Line Input #f, sLigne
sDonnees = Split(sLigne, sSeparateur)
Pb = Pb + 1
' calcul la position
nbl = nbl + 1
For I = 1 To nCol
Grid.SCGrid1.Text(nbl, I - 1) = sDonnees(I - 1)
Grid.SCGrid1.Text(nbl, -1) = Format(nbl + 1, "0000") 'mise en forme des numeros
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 mai 2007 à 23:25
"Donc ma premiere form s'appelle GRid 1 (incrementé par lgridtCount)"
C'est bien ce que je commençais à deviner (qu'il s'agissait de ta form et non de la grille en déît du nom ...bien fait, donc, de poser cette question)
Bon...
A demain car j'ai les yeux qui papillotent et les muscles qui crient "Au dodo"
Juste un truc, en attendant (pour que ty y réfléchisse déjà de ton côté)
Quyand on se réfère à un contrôle ne ne trouvant pas sur la Form dans laquelle ont se trouve, on s'y réfère ainsi :
Nom_Forme.Nim_contrôle
Vous n’avez pas trouvé la réponse que vous recherchez ?
frezz13
Messages postés15Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention 2 août 2010 21 mai 2007 à 19:52
Bonsoir,
Je l'ai mis dans ma fonction = Grid.SCGrid1......
Je patauge sec!
Je ne trouve pas d'exemple sur les sites spécialisés, sauf pour du RichTextBox
Je continu mes investigations.
Frezz13