lightedge
Messages postés6Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention12 novembre 2006
-
11 nov. 2006 à 18:28
lightedge
Messages postés6Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention12 novembre 2006
-
12 nov. 2006 à 20:38
bonsoir^^
voila j'ai un problème j'ai voulu faire un code pour faire le couper, copier, coller mais j'ai un problème.
en effet, lorsque j'utilise l'objet screen comme suit:
Clipboard.SetText Screen.ActiveControl.
j'arrive pas a voir les propriétés de ActiveControl.
remarquez qu'ici je devais utilisé la propriété SelText
merci d'avance pour votre aide^^ et désolé si j'ai posté dans une rubrique inapproprié
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 nov. 2006 à 04:19
Salut
La réaction de l'IDE de VB6 est normale : Au moment où tu codes ces lignes, il ne peut pas savoir à l'avance quel type de controle ce "ActiveControl" représente.
Si par exemple il s'agit d'une TextBox, il faudra utiliser .Text
Alors que si c'est un Label, ce sera .Caption.
Il te faudra donc repérer le type de controle avant de savoir quel attribut lire.
Utiliser la syntaxe du style (à vérifier) :
If TypeOf Screen.ActiveControl Is TextBox Then
' C'est une TextBox
ElseIf TypeOf Screen.ActiveControl Is Label Then
' C'est un Label
ElseIf ...
End If
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 nov. 2006 à 20:11
Ok, beaucoup mieux expliqué ;-)
En effet, l'utilisation de bouton (un objet) change la Screen.ActiveControl, logique.
A mon avis, la propriété .SelText n'existe pas dans tous les composants.
Donc, ça marchera avec une TextBox mais pas avec une ListBox ... Inutile de passer par l'objet, ça t'obligerait à tester le type d'objet pour connaitre la bonne méthode d'accès à la donnée (voir exemple avec TypeOf).
Ce que tu peux faire, c'est mémoriser la donnée intéressante lorsque le composant perd son focus :
Dans ta partie déclaration de ta forme, tu déclares une variable qui collectera le nom du composant sur lequel tu te trouves :
Private sLastText As String
Dans chaque composant de ta forme d'où tu veux récupérer du texte, dans _Validate :
Private Sub List1_Validate(Cancel As Boolean)
sLastText = List1.Text
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
sLastText = Text1.Text
End Sub
Et quand tu as besoin de la dernière valeur, elle est contenue dans ta chaine sLastText
Private Sub Command1_Click()
Debug.Print sLastText
End Sub
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on
lightedge
Messages postés6Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention12 novembre 2006 12 nov. 2006 à 15:19
Vous aviez raison^^. Mais dans ce cas qu'est ce que je peux faire si je ve créer un bouton pour copier l'ActiveControle devient le bouton et pas le text par exemple. auriez vous une idée sur la manière avec laquelle je pe savoir quelle est le contrôle qui a perdu le focus?
Merci encore pour votre précieuse aide^^
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 nov. 2006 à 15:49
"si je ve créer un bouton pour copier l'ActiveControle devient le bouton et pas le text par exemple"
Incompréhensible
Pour détecter la perte de focus, il suffit d'aller dans l'évènement _Validate de chaque composant, par exemple maTextBox_Validate se déclenche à chaque fois que l'utilisateur ressort de la TextBox.
Explique plutôt se que tu veux faire, j'ai l'impression que tu es parti dans un truc bien compliqué.
Précise nous aussi qu'il s'agit bien de VB6 (et pas de VBA de Excel/Word qui a hélas aussi la version 6 (une intuition))
Vous n’avez pas trouvé la réponse que vous recherchez ?
lightedge
Messages postés6Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention12 novembre 2006 12 nov. 2006 à 16:07
Non je travaille bien avec vb6. Mais je veux créer dans mon application les bouttons pour faire couper copier coller je suis aller voir beaucoup de tutos. Ils sont presque les même.
Mon projet contient des textbox, treeviex listbox et autres je voulais alors réussir a copier du texte de n'importe quel autre qui contient du texte vers un autre. voila les fonctions que j'ai trouvé pour faire cela:
Mais cela ne marchais pas car si j'ai bien compris quand j'appy sur le boutton par exemple pour faire copier le ActiveControle n'est pas alors le controle qui posséder le texte mais le boutton lui même et comme il n'a pas de seltext ça génère une erreur.
Alors si vous avez une quelconque solution a ce problème merci d'avance^^ et encore merci pour votre patience^^