1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| Private Sub EnleverOuRemettreUnePage(ByVal Choix As Byte, ByRef LesTabs As TabControl, Optional ByVal TextPage As String = "", Optional ByVal IndicePage As Integer = -1) ' 0 = Retrait / 1 = Insertion =)
Static NombrePagesStockees As Integer = -1
Static Pages() As TabPage
Dim IdxPages As Integer 'indice pour lestockage dans le tableau Pages()
Dim i As Integer
Select Case Choix
Case 0 ' retirer une page du TAbControl et la stocker dans Pages()
If LesTabs.RowCount = 0 Then ' Pas la peine de traiter si TabControl déjà vide
Exit Sub
End If
If NombrePagesStockees < 0 Then ' Initialisation du tableau Pages pour la première fois.
ReDim Pages(0)
IdxPages = 0 ' Indice dans le tableau pour le 1er stockage
NombrePagesStockees = 0
ElseIf NombrePagesStockees >= Pages.Length Then ' Agrandir le tableau quend nécessaires.
ReDim Preserve Pages(Pages.Length)
IdxPages = Pages.Length - 1 ' Indice dans le tableau pour ce stockage
Else
For i = 0 To Pages.Length - 1
If Pages(i) Is Nothing Then
IdxPages = i ' Premier posiiton disponible dans le tableau pour ce stockage
Exit For
End If
Next
End If
If TextPage = "" And IndicePage < 0 Then ' A-t-on les infos nécessaires ?
i = LesTabs.SelectedIndex 'Si aucune info, indice de l'onglet de 1er plan
ElseIf TextPage = "" Then
i = IndicePage 'Si l'indice de l'onglet est donné
Else
For i = 0 To LesTabs.TabCount - 1 'Si seul le text de l'ongle est donné, cherchons l'indice
If LesTabs.TabPages(i).Text = TextPage Then
Exit For
End If
Next i
End If
If i = LesTabs.TabCount Or i < 0 Then ' Si pas d'indice trouvé, mieux vaut se tirer de là
Exit Sub
End If
Pages(IdxPages) = MesTab.TabPages.Item(i) ' Si on estarrikvé ici :D))), stocker la page
NombrePagesStockees += 1 ' Comptabiliser ...
LesTabs.TabPages.RemoveAt(i) ' et retirer la page du TabControl
Case 1 ' rechercher une page dans Pages(), l'insérer à l'indice donné dans le TAbControl, l'enlever du stock
If IndicePage < 0 Then ' Si la position d'insertion n'est pas donnée, ce sera la 1ère position (indice 0 du TabControl)
IndicePage = 0
End If
If TextPage = "" Then ' Si le text de la page à inserrer n'est pas donné, ce sera la dernière page disponible dans le tableau Pages
IdxPages = Pages.Length - 1
While IdxPages >= 0 AndAlso Pages(IdxPages) Is Nothing ' Veiller à ce la page evisagée dans le tableauPAges ne soitr pas Nothing
IdxPages -= 1
End While
Else
For i = 0 To Pages.Length - 1 ' Si le text de la page à inserrer est donné, charcher cette page dans le tableau Pages
If Not (Pages(i) Is Nothing) AndAlso Pages(i).Text = TextPage Then
IdxPages = i
Exit For
End If
Next i
End If
If i = Pages.Length Or IdxPages < 0 Then 'Pour le cas où text n'est pas trouvé ou bien que le tableau Pages n'a plus de pages disponibles
Exit Sub
End If
LesTabs.TabPages.Insert(IndicePage, Pages(IdxPages)) ' Si on estarrikvé ici :D))), placer la page da&nsq le TabControl
NombrePagesStockees -= 1 ' Comptabiliser ...
Pages(IdxPages) = Nothing ' et retirer la page du tab;leau Pages
End Select
End Sub
Private Sub BInsertion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BInsertion.Click
If TNomPage.Text > "" And TNumPage.Text > "" Then
EnleverOuRemettreUnePage(1, MesTab, TNomPage.Text, TNumPage.Text) ' insertion à la position désignée de la page désignée
ElseIf TNomPage.Text > "" Then
EnleverOuRemettreUnePage(1, MesTab, TNomPage.Text) ' insertion en première position de la page désignée par son text
ElseIf TNumPage.Text > "" Then
EnleverOuRemettreUnePage(1, MesTab, , TNumPage.Text) ' insertion à la position désignée de la dernière page stockée
Else
EnleverOuRemettreUnePage(1, MesTab) ' insertion en première position de la dernière page stockée
End If
End Sub
Private Sub BRetrait_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRetrait.Click
If TNomPage.Text > "" Then
EnleverOuRemettreUnePage(0, MesTab, TNomPage.Text) ' retrait de la page désignée par son text
ElseIf TNumPage.Text > "" Then
EnleverOuRemettreUnePage(0, MesTab, , TNumPage.Text) ' retrait de la page désignée par son indice
Else
EnleverOuRemettreUnePage(0, MesTab) ' retrait de la page d'avant-plan
End If
End Sub |
Partager