J'ai un problème de syntaxte VB que j'arrive pas à régler.
J'ai 3 labels dans un formulaire
label1, label2, label3
Je récupère des champs dans une base de données et je voudrais que ces
labels prennent la valeur de ces champs
J'essaie, rst étant un curseur
I=0
Do While rst.cur.EOF = False
I = I+1
ligne = "label" & CStr(I)
myForm.ligne.Caption = rst.cur!maValeur
rst.cur.MoveNext
Loop
Mais ça ne fonctionne pas.
Comment pourrais-je faire ?
Merci par avance
label1.CAPTION = ...
--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"jerome" <jer...@hh.fr> a écrit dans le message de news:
%23XFfBUe...@TK2MSFTNGP04.phx.gbl...
Mais si je mets labelI ça ne fonctionne pas
"LE TROLL" <le tr...@enfer.fr> wrote in message
news:uJN2WYe7...@TK2MSFTNGP03.phx.gbl...
myForm.ligne.
myForm ???
ligne.caption ???
Et aussi ça:
ligne = "label" & CStr(I)
myForm.ligne.Caption = rst.cur!maValeur
ligne reçoit dans une boucle "Do" label... Puis reçoit "rst..."
Ligne contient la dernière affectation (rst), faut:
ligne=
ligne=ligne & ...
Et enfin, "ligne", ça perd sa valeur à chaque passage, et a priori cette
valeur n'est pas récupérée avant ???
dim x(y)
Do...
...
x(y) = ligne ' pour conserver sa valeur...
loop
--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"jerome" <jer...@hh.fr> a écrit dans le message de news:
%23XFfBUe...@TK2MSFTNGP04.phx.gbl...
Label1.Caption = variable & "dutexte"
Label1.Caption = variable
Label1.Caption = "dutexte"
--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"jerome" <jer...@hh.fr> a écrit dans le message de news:
ugmUYge7...@TK2MSFTNGP03.phx.gbl...
Solution la plus simple
Créer un groupe de contrôles "MonLabel"
Ensuite on accède au texte de chaque membre par MonLabel(I).Caption
(Pour créer le groupe de façon simple, créer un label puis copier/coller et
repondre "Oui" quand VB vous demande si vous voulez créer un groupe. Repeter
à souhait)
Clive
Disons plus simplement que je souhaiterais faire
Dim I as integer
I=0
Do While I<=3
I = I + 1
label(I).Caption = I
Loop
donc à l'arrivée
label1.Caption = 1
label2.Caption = 2
label3.Caption = 3
"LE TROLL" <le tr...@enfer.fr> wrote in message
news:uXeXvme7...@TK2MSFTNGP03.phx.gbl...
Dim i As Integer
For i = 1 to 3
If = 1 Then Label1.Caption = i
If = 2 Then Label2.Caption = i
If = 3 Then Label3.Caption = i
Next i
Par contre, comme a dit "Clive", si tu veux indicer un Label
labelX(i)
Il faut préalablement déclarer 3 label du même nom qui vont être indicés, tu
fais ainsi:
- Tu colles sur la form un label1
- A la souris sur ce label1 tu fais <copier>
- Toujours à la souris, à un autre endroit de la form tu fais <coller> +
<oui>
- Tu recommences une seconde fois le coller (il n'y aura pas la question)
nb: en cliquant sur l'objet, dans sa propriété Index tu pourras voir son
numéro d'ailleurs...
- Et seulement ensuite tu pourras utiliser ton label comme tu l'as indiqué,
soit:
Dim i as integer
For i = 1 to 3
Label(i).Caption = i
Next i
Si tu n'y arrives pas, dis, je te fais le code et je te l'envoie par
fichier...
--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"jerome" <jer...@hh.fr> a écrit dans le message de news:
uqTcpve7...@TK2MSFTNGP04.phx.gbl...
Effectivement avec les groupes de contrôle ça fonctionne.
Merci encore
.
"Clive Lumb" <clumb2@Gratuit_in_English.fr.invalid> wrote in message
news:e1OHUte...@TK2MSFTNGP05.phx.gbl...
Il me semble que ce qui est écrit ci-après
>Dim i As Integer
> For i = 1 to 3
> If = 1 Then Label1.Caption = i
> If = 2 Then Label2.Caption = i
> If = 3 Then Label3.Caption = i
> Next i
serait plus simple ainsi
> Label1.Caption = 1
> Label2.Caption =2
>Label3.Caption =3
"LE TROLL" <le tr...@enfer.fr> a écrit dans le message de news:
uDiHf5e7...@TK2MSFTNGP05.phx.gbl...
--
Merci beaucoup, au revoir et à bientôt :o)
------
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Patrice Henrio" <patrice...@laposte.net> a écrit dans le message de
news: O$PD1cf7G...@TK2MSFTNGP04.phx.gbl...
Lorsque que l'on écrit
Ligne="Label1"
Cela représente seulement la chaîne de caractères décrivant le nom du label.
un peu comme "2006" n'est que l'écriture d'une entité numérique représentant
la valeur 2006.
On ne peut donc pas utiliser la valeur de Ligne ("label1") comme étant
l'objet Label1 lui-même (ils ne sont pas du même type).
De même que l'on ne peut additionner "2006" et 1 pour obtenir 2007.
A priori l'écriture
myForm.ligne.Caption="Test"
attend une propriété ligne définie avec l'objet form ou un contrôle nommé
ligne dans la forme.
Donc si j'ai un label de name "Ligne"
Dim Ligne as string
Ligne="Label1"
MyForm.ligne.Caption=Ligne
affichera le texte "Label1" dans le label Ligne et non dans le label Label1.
"jerome" <jer...@hh.fr> a écrit dans le message de news:
%239EAm7e...@TK2MSFTNGP03.phx.gbl...
Je crois que peut aussi aider à la compréhension de pourquoi cela ne marche
pas et pensant à ce qui se passe lors de la compilation.
Un label est un contrôle, membre de la collection de contrôles de la
formulaire.
Il se trouve l'index "n" dans la liste de contrôles et lorsque l'appli est
compilé toute référence à ce label se fait par son index, pas par son nom.
Si on veut absolument y accéder par son nom en runtime - par exemple composé
par programmation ou lu dans une BdD - on peut toujours utiliser la methode
suivante
Public Sub ModifCaption(NomLabel As String, Texte As String)
Dim MonControl As Control
For Each MonControl In Me.Controls
If TypeOf MonControl Is Label Then
If MonControl.Name = NomLabel Then
MonControl.Caption = Texte
End If
End If
Next
End Sub
Clive
"Clive Lumb" <clumb2@gratuit_en_anglais.fr.invalid> a écrit dans le message
de news: 452f3f27$0$31934$426a...@news.free.fr...
La fonction s'appelé souvent "eval".
Et je crois que l'action est "Canonical Coercion" ??
'Dans toutes les forms ou la fonction doit être accessible
Public Function GetByName(n As String) As Control
Dim c As Control
For Each c In Me.Controls
If c.Name = n Then
Set GetByName = c
Exit Function
End If
Next c
End Function
'Utilisation:
Form1.GetByName("Text1").Caption = "Texte"
Vincent Guichard
Bravo.
A plus
"Vincent Guichard" <vg.bleu...@wanadoo.fr> a écrit dans le message de
news: 452f5470$0$5094$ba4a...@news.orange.fr...
Vincent Guichard
Et Clive avait pensé à faire la même chose, mais a préferé une solution
labello-centrique pour éviter la gestion des erreurs si on donne le nom d'un
autre type de contrôle.
Au fait, est-ce qu'un d'entre vous aurait pris le temps d'écrire un fonction
pour remplacer "TypeOf" pour permettre plus de facilité...?
Style:
sub MonTypeOf(Mycontrol)
if typeof MyControl is Label then MonTypeOf="Label" : exit sub
if etc.
end sub
> Vous pouvez passer la collection Controls(index) à une fonction dont l'argument est spécifié en tant que classe Controls. Vous pouvez aussi accéder aux membres à partir de leur nom. Par exemple :
>
> Controls("Command1").Top
>
> Vous pouvez utiliser le mot-clé TypeOf avec l'instruction If, ou la fonction TypeName, pour déterminer le type d'un contrôle dans la collection Controls.
>
Donc en fait, plutôt que ma fonction, un simple
Form1.Controls("Text1").Caption = "Texte"
marche aussi bien (voire mieux) :)
Et TypeName est la fonction que tu cherches :)
Debug.Print TypeName(Form1.Controls("Text1")) 'Affiche TextBox
Vincent Guichard (si seulement j'avais le temps d'aprendre MSDN par
coeur ^^)
En plus c'est logique.
J'ai bien utilisé un syntaxe semblable pour accèder aux labels d'un
DataReport, pourquoi n'y avais-je pensé ?
> Et TypeName est la fonction que tu cherches :)
> Debug.Print TypeName(Form1.Controls("Text1")) 'Affiche TextBox
Tiens !
Je suis passé totalement à coté de celui-là, jamais connu, jamais utilisé.
Comme quoi on peut toujours apprendre.
Je me coucherai moins bête ce soir (mais avec quelques neurones en moins)
Merci
For i = 1 To 3
Controls("Label" & i).Caption = "Essai " & i
Next
jerome a formulé ce jeudi :
--
____
( O | O )
--
_oooO_ JLuc _Oooo_
O-\O