Mes objets se décalent !!!!

[Résolu]
Signaler
Messages postés
22
Date d'inscription
dimanche 21 juin 2009
Statut
Membre
Dernière intervention
7 septembre 2009
-
Messages postés
22
Date d'inscription
dimanche 21 juin 2009
Statut
Membre
Dernière intervention
7 septembre 2009
-
Bonjour à tous,

J'ai un souci de décalage.
Dans une form, j'ai mis un sstab avec l'ajout de tab en dynamique. Le truc, c'est que, à l'ajout d'un tab, automatiquement il y a un textbox qui se crée.
En gros, si j'ajoute dynamiquement 5 tab, il y aura 5 textbox dont 1 par tab.

Mon problème, le voici :
les 2 derniers tabs créés marchent comme sur des roulettes mais par contre dans les premiers tabs, les textbox se décalent au fur et à mesure et après on finit par ne plus les voir

quelqu'un aurait-il une solution pour éviter le décalage, merci d'avance !

4 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
t'étais pas loin....
en fait tu dis au sstab d'abord d'ajouter, puis ensuite seulement d'accepter un tab de plus sur la même ligne
résultat, il a déjà décalé le reste

il faut donc juste inverser l'ordre de ces 2 lignes :

SSTab1.Tabs = y

SSTab1.TabsPerRow = y






NéANMOINS! tes variables sont mauvaises
1. c'est des variant
2. des noms réservés ! (propriétés de la form)
3. inutiles, ta procédure peut tout gérer seule

voici ce que çà devrait donner :






Option Explicit




Private Sub 
AddTab(iNum 
As Integer
)


'   préparation sstab

    With SSTab1
        .TabsPerRow = iNum + 1
        .Tabs = iNum + 1
        .Tab = iNum
        .Caption = "Onglet " & CStr(iNum)
    End With

'   création et
attachement textbox
    Dim tBox As textbox
    Set tBox = Me.Controls.Add("VB.TextBox", "Text_" & CStr(iNum), SSTab1)
    With tBox
        .Text = tBox.Name
        .Move 120, 480, 9615, 5175
        .Visible = True
    End With
    Set tBox = Nothing
End Sub

Private Sub Command1_Click()
    Call AddTab(SSTab1.Tabs)
End Sub

Private Sub Form_Load()
'   juste pour voir
centré...
    With SSTab1
        .Width = 9615 + (120 * 2)
        .Height = 5175 + (480 * 2)
    End With
    
'   création 1er
élément
    Call AddTab(0)
End Sub





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>




++
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

oui, la création d'un tab va en fait masquer les box sur une partie non visible
lors de la création tu dois forcer le positionnement après la création du tab

++

<hr size="2" width="100%" />
Messages postés
22
Date d'inscription
dimanche 21 juin 2009
Statut
Membre
Dernière intervention
7 septembre 2009
1
Merci de m'avoir répondu mais pour forcer le positionnement, on fait comment ?
je te donne ma source mais j'ai cherché pas mal mais je n'y arrive vraiment pas !

Voici ma source, si tu pourrais me débloquer, je ne te dirais pas "merci" mais plutot "MERCI"


Option Explicit

Dim NbTab As Integer 'Variable SStab
Dim Left, Top, Width, Height As Integer 'Variable Textbox
Dim textboxname As String
Dim textbox As Control
Dim y As Integer

Public Sub AddTab(x As Integer)

y = x + 1
Left = "120"
Top = "480"
Width = "9615"
Height = "5175"
textboxname = "Text" & x

SSTab1.Tabs = y
SSTab1.TabsPerRow = y
SSTab1.Tab = x
SSTab1.Caption = x

Set textbox = Controls.Add("VB.textbox", textboxname, SSTab1)
textbox.Visible = True
textbox.Left = Left
textbox.Top = Top
textbox.Width = Width
textbox.Height = Height
textbox.Text = textbox.Name
End Sub

Private Sub Command1_Click()
NbTab = SSTab1.Tabs
Call AddTab(NbTab)
End Sub

Private Sub Form_Load()
Call AddTab(0)
End Sub
Messages postés
22
Date d'inscription
dimanche 21 juin 2009
Statut
Membre
Dernière intervention
7 septembre 2009
1
M E R C I