Savoir si un controle est chargé sur une form [Résolu]

Signaler
Messages postés
49
Date d'inscription
mardi 11 juin 2002
Statut
Membre
Dernière intervention
28 janvier 2006
-
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
-
Salut,

Comment peut-on savoir qu'un controle (label, textbox) est chargé sur une form ?, car je crée un label dynamiquement, lors de l'evenement click sur un bouton, et biensûr si je re click sur le bouton, une erreur me dit que le contrôle est déja chargé.

Public Sub AfficheMsg(LeMsg As String, f As Form, Style As String)

Si f.LblInfo pas chargé alors '<- Mon prob est ici

Load f.LblInfo(1)

With f.LblInfo(1)

.Left = 0
.Top = 0
.Caption = LeMsg
.AutoSize = True
.Visible = True

End With

Fin Si

End Sub

Voilà, si quelqu'un a une soluce, ça m'aiderais bien. Ca doit pas être grand chose en plus.

Merci

4 réponses

Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
salut tu peux faire ceci

dim ctl as control
For Each ctl In Me.Controls
            If TypeOf ctl Is Textbox Then msgbox " Controle textbox chargé"


addaptes le code en conséquence

@+ J.P.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 199 internautes nous ont dit merci ce mois-ci

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
13
Après une tite étude, voilà mon code qui peut pllaier à certains bugs du 1er :

Public Sub AfficheMsg(LeMsg As String, f As Form, Style As String)
Dim c As Control
Dim x As Integer
Dim test As Boolean

For Each c In f.Controls
If c.Name = "lblinfo" Then
test = True
On Error GoTo trt_error
If c.Index > x Then x = c.Index
On Error GoTo 0
End If
Next

If Not test Then
MsgBox "Le controle n'existe pas !"
Exit Sub
End If

Load f.lblinfo(x + 1) ' le controle existe et on en crée une nouvelle instance

With f.lblinfo(x + 1)

.Left = 0
.Top = 0
.Caption = LeMsg
.AutoSize = True
.Visible = True

End With
Exit Sub
trt_error:
MsgBox "Le controle existe mais ne fait pas partie d'un goupe de controles"
End Sub


Cordialement, CanisLupus
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 199 internautes nous ont dit merci ce mois-ci

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Ou sinon, fais une routine de traitement d'erreur avant la ligne qui pose problème :

On error resume next
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
13
Salut, essaie ça :

Public Sub AfficheMsg(LeMsg As String, f As Form, Style As String)
Dim c As Control
Dim x As Integer

For Each c In f.Controls
If c.Name = "lblinfo" Then
If c.Index > x Then x = c.Index
End If
Next

If x = 0 Then Exit Sub ' le controle n'existe pas

Load f.lblinfo(x + 1) ' le controle existe et on en crée une nouvelle instance

With f.lblinfo(x + 1)

.Left = 0
.Top = 0
.Caption = LeMsg
.AutoSize = True
.Visible = True

End With

'Fin Si

End Sub


Cordialement, CanisLupus