Mes objets se décalent !!!!

Résolu
Aurel62190 Messages postés 22 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 7 septembre 2009 - 14 juil. 2009 à 17:27
Aurel62190 Messages postés 22 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 7 septembre 2009 - 14 juil. 2009 à 19:41
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 juil. 2009 à 18:44
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>




++
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 juil. 2009 à 17:30
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%" />
0
Aurel62190 Messages postés 22 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 7 septembre 2009 1
14 juil. 2009 à 17:55
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
0
Aurel62190 Messages postés 22 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 7 septembre 2009 1
14 juil. 2009 à 19:41
M E R C I
0
Rejoignez-nous