[VB6] passer le nom d'un controle par variable

passer le nom d'un controle par variable [VB6] - Programmation

Marsh Posté le 20-11-2001 à 11:26:13    

Vouala mon soucis...
 
soit le controle text1
 
je voudrais pouvoir passer son nom (text1) dans une function..
 
genre :
 
controlName = text1.name
 
 
public function (controlname as string)
 
controlname.caption = "HFR is Fantastic"
 
Enf function
 
mais forcément, cela ne marche pas.... kelkun a une idée ? il y a une syntaxe spéciale ?
 
Merci d'avance
 
Chapi


---------------
I drive at 88mph ! Just in case...
Reply

Marsh Posté le 20-11-2001 à 11:26:13   

Reply

Marsh Posté le 20-11-2001 à 11:34:52    

Ben il suffit de declarer une variable de type control, de la faire pointer sur ton textbox et de passer son .name a ta function
 
vala  ;)

Reply

Marsh Posté le 20-11-2001 à 11:37:17    

Merci msieur !


---------------
I drive at 88mph ! Just in case...
Reply

Marsh Posté le 20-11-2001 à 14:23:22    

bon j'ai toujours mon chti problème...je n'arrive pas à passer le nom en variable :-(
 
ex:  
 
Dim test As Control
 
rep = InputBox("Nom du controle" )
 
Set test = rep
test.Caption = "HFR is fantastic"
 
 
...ne marche pas.. Ca fonctionne si je mets directos le nom du ocntrole à la place de rep mais ce n'est pas ça que je veux faire moua... je veux vraiment que le nom du controle se ballade et soit exploitable dans une fonction..
 
Merci d'avance !


---------------
I drive at 88mph ! Just in case...
Reply

Marsh Posté le 21-11-2001 à 14:37:19    

2 solutions :
 
------------------------------------------------------------
'Fonction
Public Sub Titre(Ctl as Control)
  if TypeOf Ctl Is CommandButton
    Ctl.Caption = "Ca marche"
  end if
End Sub
 
'Appel
Titre(BoutonOK)
'-> affiche "Ca marche" comme titre du bouton OK
 
------------------------------------------------------------
'Fonction
Public Sub Titre(ControlName as String)
 Dim tmpCtl as Control
 Set tmpCtl = MaForm.Controls(ControlName)
 If tmpCtl is Nothing then
   msgbox "La feuille MaForm ne contient pas de contrôle " & ControlName
 Else
 if TypeOf tmpCtl is CommandButton then
   tmpCtl.Caption = "Ca marche"
 else
   msgbox "le controle " & controlname & " n'est pas un bouton"
 end if
 end if
End Sub
 
'Appel :
Titre "BoutonOK"
 
Voila qui devrait te permettre de faire ce que tu cherches  
 
a+

Reply

Marsh Posté le 21-11-2001 à 14:44:33    

Oki merci, je vais voir ce que ça donne...paske passer par des globales, c'est pas ce que je préfère ;)
 
Controls est une collection, isn't it ?


---------------
I drive at 88mph ! Just in case...
Reply

Marsh Posté le 21-11-2001 à 18:54:02    

oui mais à ton niveau un petit passage par une globale ne doit pas être bien génant.

Reply

Marsh Posté le 21-11-2001 à 19:34:37    

Non, j'aime pas les globales, j'en ai deja une 10aine dans un module et quand c'est un prog avec 65 forms, ça commence à être un peu le bordel à gérer...
 
Et mon prof d'algo m'a  disait tjs "les globales c'est caca !" ;)

Reply

Marsh Posté le 22-11-2001 à 14:30:51    

-----
soit le controle text1  
je voudrais pouvoir passer son nom (text1) dans une function..  
genre :  
controlName = text1.name  
 
public function (controlname as string)  
controlname.caption = "HFR is Fantastic"  
End function  
-----
 
 
dim Ctr as control
 
for each Ctr in me.controls
    ' cette boucle te permet de parcourir tous les controls  
    ' de ta feuille
    ' il te suffit de verifier que tu pointes sur le bon et :  
    if  ----  then call sub(Ctr.name)  ' et hop
 
next

Reply

Marsh Posté le 22-11-2001 à 15:04:47    

Bloody> Ca marche, mais ca sert strictement à rien :)
 
Tu accède directement a Me.Controls("NomDuControle" ), ca fait pareil et ca va nettement + vite (à coder et à exécuter)
 
(Ou alors, c'est que j'ai pas pigé ce que tu veux faire)

Reply

Marsh Posté le 22-11-2001 à 15:04:47   

Reply

Marsh Posté le 22-11-2001 à 17:57:38    

Ouais sauf si t as pas le nom de ton control mais que tu peux l identifier autrement (par son contenu par exemple)
 
Si Chapi avait le nom du control, je pense qu il n aurait pas poster  ;)  
 
Ou alors j ai rien compris   :crazy:  
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed