utilisation d'un tabStrip

utilisation d'un tabStrip - VB/VBA/VBS - Programmation

Marsh Posté le 31-01-2005 à 14:53:16    

bonjour,
j'ai un probleme avec l'utilisation de mon tabStrip.  
j'explique un peu mon programme: mon prog est censé, a partir d'un fichier texte, créer un onglet puis une frame puis un text et un label!
le tout est créer dynamiquement!  
pour l'instant j'ai pas de probleme!
ensuite dans mon tabstrip_click (fonction pour changer d'onglet) j'ai un probleme pour identifier les objects et les afficher ou les cacher!
 
voici mon code :  

Option Explicit
Option Compare Text
Option Base 1
Private Const ESPACE = 400
Private Const LABELLARGEUR = 1600
Private Const LABELHAUTEUR = 285
Private Const TEXTLARGEUR = 600
 
Private Sub Form_Load()
Dim BclErreur As Long
Dim Ferr As ferreur
Dim nomfile As String
Dim tableauText() As Object
Dim tableauFrame() As Object
Dim tableauLabel() As Object
  nomfile = App.Path & IIf(Right(App.Path, 1) <> "\", "\", "" ) & "param\affichage.txt"
  lecturefichierconf nomfile, Onglet, tableauFrame(), tableauText(), tableauLabel()
 
  Exit Sub
gesterreur:
  Select Case Err.Number
    Case Else
      Set Ferr = New ferreur
      Ferr.Afficherreur Err.Number, Err.Description, App.Title & ":Application.Form_Load", BclErreur
  End Select
  Err.Clear
  BclErreur = BclErreur + 1
  If BclErreur >= 3 Then Exit Sub
  Resume Next
End Sub
 
 
Private Sub lecturefichierconf(nomfichier As String, Onglet As TabStrip, tabFrame() As Object, _
  tabTexte() As Object, tabLabel() As Object)
Dim param As String
Dim Decoup() As String
Dim i As Integer
Dim hauteur As Integer, largeur As Integer, gauche As Integer
Dim NbOnglet As Integer, nbLabelText() As Variant, NbFrame() As Integer, ArrayLabel() As Integer
Dim nTopFrame() As Integer, nLeftFrame As Integer, nTopLabel As Integer
Dim indexOnglet As Integer, indexFrame As Integer, indexText As Integer
Dim BclErreur As Long
Dim Ferr As ferreur
 
nLeftFrame = 200
gauche = nLeftFrame
largeur = Onglet.Width - 400
hauteur = 0
  On Error GoTo gesterreur
  Open nomfichier For Input As #1
  Do While Not EOF(1)
    Line Input #1, param
    param = Trim(param)
    If Left(param, 1) <> "'" Then
      If InStr(1, param, "=" ) > 1 Then
        Decoup = Split(param, "=" )
        If (Trim(Decoup(0)) = "NOM_ONGLET" ) Then
          Onglet.Tabs.Add
          NbOnglet = Onglet.Tabs.Count
          Onglet.Tabs(NbOnglet).Caption = Trim(Decoup(1))
          indexOnglet = Onglet.SelectedItem.Index
          ReDim Preserve NbFrame(NbOnglet)
          ReDim Preserve nbLabelText(NbOnglet)
        ElseIf (Trim(Decoup(0)) = "NOM_FRAME" ) Then
          NbFrame(NbOnglet) = NbFrame(NbOnglet) + 1
          ReDim Preserve tabFrame(NbFrame(NbOnglet))
          ReDim nTopFrame(NbFrame(NbOnglet))
          If IsObject(Application.Controls) Then
            Set tabFrame(NbFrame(NbOnglet)) = Application.Controls.Add( _
                                "VB.Frame", "Frame" & NbOnglet & NbFrame(NbOnglet))
          End If
          If Not tabFrame(NbFrame(NbOnglet)) Is Nothing Then
            tabFrame(NbFrame(NbOnglet)).Left = nLeftFrame
            tabFrame(NbFrame(NbOnglet)).Caption = Decoup(1)
            tabFrame(NbFrame(NbOnglet)).Width = largeur
            hauteur = ((Onglet.Height - ESPACE * 2) - (NbFrame(NbOnglet) - 1) * 400) / NbFrame(NbOnglet)
            For i = 1 To NbFrame(NbOnglet) Step 1
              nTopFrame(i) = ESPACE + (hauteur + ESPACE) * (i - 1)
              tabFrame(i).Top = nTopFrame(i)
              tabFrame(i).Height = hauteur
            Next i
            tabFrame(NbFrame(NbOnglet)).Visible = True
            tabFrame(NbFrame(NbOnglet)).ZOrder
          End If
          ReDim Preserve ArrayLabel(NbFrame(NbOnglet))
          nbLabelText(NbOnglet) = ArrayLabel()
          nTopLabel = 240
        ElseIf (Trim(Decoup(0)) = "NOM_PARAM" ) Then
          nbLabelText(NbOnglet)(NbFrame(NbOnglet)) = nbLabelText(NbOnglet)(NbFrame(NbOnglet)) + 1
          ReDim tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet)))
          ReDim tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet)))
          If IsObject(Application.Controls) Then
            Set tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))) = Application.Controls.Add("VB.Label", "label" & NbOnglet & NbFrame(NbOnglet) & nbLabelText(NbOnglet)(NbFrame(NbOnglet)))
            Set tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))) = Application.Controls.Add("VB.Textbox", "text" & NbOnglet & NbFrame(NbOnglet) & nbLabelText(NbOnglet)(NbFrame(NbOnglet)))
            'remplacer les nom du control par les valeurs à lire
          End If
          If Not tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))) Is Nothing Then
            tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Top = nTopLabel + 50
            tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Left = gauche
            tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Width = LABELLARGEUR
            tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Height = LABELHAUTEUR
            tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Caption = Decoup(1)
            tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Visible = True
          End If
          If Not tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))) Is Nothing Then
            tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Top = nTopLabel
            tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Left = gauche + LABELLARGEUR
            tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Width = TEXTLARGEUR
            tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Height = LABELHAUTEUR
            tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Text = Decoup(2) 'ObtenirMRS(trim(decoup(2))
            tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Visible = True
          End If
          nTopLabel = nTopLabel + LABELHAUTEUR
          If nTopLabel > (tabFrame(NbFrame(NbOnglet)).Height - LABELHAUTEUR) Then
            nTopLabel = 240
            gauche = (gauche + LABELLARGEUR + TEXTLARGEUR) + 400
          End If
          Set tabTexte(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Container = tabFrame(NbFrame(NbOnglet))
          Set tabLabel(nbLabelText(NbOnglet)(NbFrame(NbOnglet))).Container = tabFrame(NbFrame(NbOnglet))
        End If
      End If
    End If
  Loop
  Close #1
End Sub
 
Private Sub Onglet_Click()
Dim i As Integer
Dim IdSelectOng As Integer
IdSelectOng = Onglet.SelectedItem.Index
tabFrame(IdSelectOng).ZOrder 0
   
  'If i = IdSelectOng Then
  '  tableauFrame(i).Visible = True
  'End If
   
Next i
 
End Sub


 
 
merci

Reply

Marsh Posté le 31-01-2005 à 14:53:16   

Reply

Marsh Posté le 31-01-2005 à 14:56:14    

j'ai trouvé une piste...  
mes tableaux de frame text et onglet n'etait pas déclaré en global! je sais ça prend de la place mais bon ....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed