Sélection de Form Dynamiques

frezz13 Messages postés 15 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 2 août 2010 - 19 mai 2007 à 22:13
frezz13 Messages postés 15 Date d'inscription mardi 9 mars 2010 Statut Membre Derniè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.

Cordialement

Frezz13

Frezz13

5 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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)
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
19 mai 2007 à 22:33
Bonsoir à tous,

Une boule de Crystal...   ....Si elles sont pas trop cher j'en prend une...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
frezz13 Messages postés 15 Date d'inscription mardi 9 mars 2010 Statut Membre Derniè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


            Next
         Loop
    Close #f
 
  End If
 
  'RAZ
  Erase sDonnees()
    sLigne = ""
    I = 0
    f = 0
    nbl = 0
    nCol = 0
    Grid.SCGrid1.Redraw = True
           Grid.SCGrid1.Visible = True
                Me.Timer1.Enabled = True
          Grid.SCGrid1.Refresh
            
FinProc:
    Exit Function


ErrHandler:
    MsgBox "erreur : le fichier n'existe pas ou il est corrompu! " & Err.descritpion
    Resume FinProc


End Function
'-----------------------------------------

Pour la boule de crystal sa rentre pas dans le tôyô

Frezz13
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
frezz13 Messages postés 15 Date d'inscription mardi 9 mars 2010 Statut Membre Derniè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
0
Rejoignez-nous