Créer un Label avec un programme

InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013 - 26 avril 2011 à 09:47
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013 - 26 avril 2011 à 15:40
Salut,

Je voudrais créer un Label àpartir d'un programme, parce que en fait je dois afficher la température de capteurs que j'ai a ma disposition, et il se peut que ce nombre de capteurs changent c'est pourquoi je voudrais créer autant de label qu'il y a de capteurs (les capteurs étant définit dans un fichier Ini).
Et je trouve pas comment créer un label et pis si possible si vous pouviez m'explquiez comment faire pour le placer comme il faut, mettre une taille correct ..... ca serait cool ^^

10 réponses

InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
26 avril 2011 à 10:22
J'ai réussi a créer le label mais mon programme crash a chaque fois .....
"grace" a ca:

Private Sub Form_Load()
Frm_Main.Controls.Add "VB.Label", "Label1"
With Frm_Main!Label1
.Visible = True
.Width = 2000
.Caption = "Dynamic Button"
End With
End Sub
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2011 à 11:12
Salut

La technique consiste à créer un premier Label auquel tu mettras l'Index 0 (dans les propriétés).
Ensuite, quand tu veux un nouveau Label, il te suffit de le charger à partir de cette base, avec un n° d'index incrémental :
Load monLabel(1)

Cette solution ne fonctionne qu'en VB6 (la catégorie de ta question), pas e VBA.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
[img]http://allproj
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
26 avril 2011 à 11:36
Oui sauf quye je veu le faire en programmation et voila j ai ceci:

Private Sub CreateLabel()

Dim k As Integer, j As Integer, i As Integer
Dim a As String

k = 4230
j = 4230

Call IniReadItems(ConfigHardIniPath, "SENSORS", MySensors())


For i = 1 To UBound(MySensors)
a = IniReadString(ConfigHardIniPath, "SENSORS", MySensors(i))
cfg_Sensors() = Split(a, "")
If Left(MySensors(i), 1) = "HUMIDTY" Then MsgBox (" un probleme est survenu, veuillez vérifier le nom des capteurs")
j = j + 600
Frm_Main.Controls.Add "VB.Label", "testlabel"
With Frm_Main!testlabel
.Index = i
.Top = j
.Left = 2430
.Visible = True
.Width = 1215
.Caption = cfg_Sensors(3)
End With
Next i

Mais je ne peux pas créer l index car il me dit, " la propriété index ne peux pas etre défini au moment de l execution"

je sais bien qu il faut aller dans propriété et tout mais ca c si on fai la méthode de base cad ajouter un label "graphiquement" mais la j'ai dit que je voulais le créer en programmation ....
Mais bon merci quand meme ^^

HELP please =)
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
26 avril 2011 à 12:48
Salut
il faut créer le tableau le premier élement
en design mode ide

sur ta form tu places un label tu lui donnes un
nom significatif et après tu le copie et colle
à la question "do you want to create an control
array" clique sur oui
résultat sur ta form tu as deux label indexé
(0) et (1)
tu peux effacer le label(1) et après dans le code
comme Jack t'as indiqué
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2011 à 12:58
Non, tu n'as pas compris ce que j'ai écrit. Je recommence.

Sur ta forme, tu crées un Label auquel tu donnes l'index 0.
Au besoin, tu le déclares Visible = False
C'est la seule chose que tu aies à préparer pour pouvoir en charger d'autres !

Ensuite, par programme, tu charges de nouveaux Label indexés, prenant comme base, l'exemplaire que tu as mis sur ta forme.
Une fois Loadé un nouvel label indexé, il te suffit de le rendre Visible et de le placer où tu le souhaites.

AVANT DE RÉPONDRE :
Confirme-nous que tu travailles en VB6 (et pas dans le VBA d'une appli Office).
Ce serait bête et énervant qu'on perde du temps sur un sujet mal présenté.
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
26 avril 2011 à 13:28
J'ai choisi le theme VB6 parce que je usis en VB6 oui ^^
Et sinon ok je ais voir ca ^^ jte tiens au courant reste pas trop loin XDDD
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
26 avril 2011 à 14:00
Donc j'ai essayé ce que tu m'as conseillé et c'est vrai maintenant je n'ai pu le message: " la propriété index ne peux pas etre défini au moment de l execution"

Mais il me dit:
erreur de compilation: méthode ou membre de donnée introuvable

J'ai créé le label donc graphiquement et je lui ai donné le meme nom que dans mon programme soit: testlabel et je lui ai mi son index à 0.
Mais apparement y a encore un probleme ! quand j arrive a mon:

Frm_Main.Controls.Add "VB.Label", "testlabel"
With Frm_Main!testlabel
.Index = i

et bah il bug ici pourtant je l ai bien mis dans une boucle for donc ici i = 1 donc index=1 d'ou je vois pas le soucis
une idée ?
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
26 avril 2011 à 15:29
Pour l instant j'en suis a la :

Private Sub CreateLabel()

Dim i As Integer, j As Integer, k As Integer
Dim a As String

k = 4230
j = 4230

Call IniReadItems(ConfigHardIniPath, "SENSORS", MySensors())  'permet de lire le nom des objets dans notre fichier
                                                              'ConfigHard (C:\Program Files\C-Mac\ConfigHard.ini)


For i = 1 To UBound(MySensors)
  a = IniReadString(ConfigHardIniPath, "SENSORS", MySensors(i))
  cfg_Sensors() = Split(a, "")
  If Left(MySensors(i), 1) = "H" Then  'si notre nom de capteur ne commence pas par H pour HUMIDITY....
    j = j + 600
    Frm_Main.Controls.Add "VB.Label", "testlabel"
    With Frm_Main!testlabel(i)
        .Top = j
        .Left = 2430
        .Visible = True
        .Width = 1215
        .Caption = cfg_Sensors(3)
    End With
  End If
  
  If Left(MySensors(i), 1) = "T" Then   'si notre nom de capteur ne commence pas par T pour TEMPERATURE....
    k = k + 600
    Frm_Main.Controls.Add "VB.Label", "testlabel"
    With Frm_Main!testlabel(i)
        .Top = k
        .Left = 5670
        .Visible = True
        .Width = 1215
        .Caption = cfg_Sensors(3)
    End With
  End If

Next i
 
End Sub



Mias il y a toujours un probleme car quand je veux créer le label, il me dit qu il existe deja (ce qui est vrai vu que je l ai ajouté graphiquement comme vous me l avez conseillé)
Mais moi ce que je voudrais faire ca serai dont créer un autre label du meme nom mais avec un index différent et je vois pas comment on fait
J'ai essayer d'enlever carrément la ligne créer le label mais ca marche pas non plus car il me dit que testlabel(1) n existe pas (ce qui est vrai aussi vu que j ai créé que testlabel(0))

Une idée ?
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2011 à 15:36
Relis ma première réponse et tu verras la méthode de chargement à adopter.
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
26 avril 2011 à 15:40
ha okkkkkkkkkkk dsl ^^ bah merci ^^ c bon ca marche enfin après j'ai des truc à modifier et tout mais bon merci !
0
Rejoignez-nous