ACTIVEX TEXTNUM / AJOUT DE LA PROPRIÉTÉ ENABLED

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 23 mai 2003 à 09:37
langju Messages postés 88 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 27 juillet 2007 - 24 mai 2003 à 12:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7202-activex-textnum-ajout-de-la-propriete-enabled

langju Messages postés 88 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 27 juillet 2007
24 mai 2003 à 12:42
Of course le but de ce site est l'apprentissage !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mai 2003 à 11:34
le concept, sans doute, mais tel que programmé, je l'ignores, et puis les modifications qu'il a apportées sur mon conseil, en font quelque chose de different. Le tout c'est que l'auteur ai appris...
langju Messages postés 88 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 27 juillet 2007
24 mai 2003 à 10:55
Je connais ce code source ;-)

Il est tiré d'un livre de Micro Application Poche "Visual Basic 6"

@+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2003 à 18:40
content que tu aies apportés des modifs , certaines choses me gènent toujours un peu pourtant

- pourquoi on a un textbox vide parfois, au lieu d'un 0
- ce que tu as fais avec le backspace pars d'une bonne idée, mais appliqué comme cela, ca prouve que tu n'as pas bien saisi l'interet de la chose !!

meme remarque que ce matin !! si tu place le curseur en plein milue, et que tu appuies sur Backspace, ca deconne , et c'est normal !

met plutot ca.....
Private Sub TextNum_KeyPress(KeyAscii As Integer)
'BackSpace
If KeyAscii = 8 Then Exit Sub
'permet d'effectuer des copier coller
If KeyAscii 22 Or KeyAscii 3 Or KeyAscii = 24 Then Exit Sub

enfin, la propriété Texte devient obsolete, vue que tu as la propriete Value

et puis, il faudrais ajouter dans les propbags.... cette propriété Value...

j'ai vu que tu remplacait virgules par point , pense a faire le necesaire si on copie colle......


voila, je pense que ces remarques pourront t'etre profitables.....
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2003 à 09:37
aïe ! des trucs me derangent serieusement , fais le test suivant :
- tu tapes 123 , tu places le curseur de saie en plein milieu et tu tapes Abc.......
- ou bien un copier coller, même !!!
- Si je veux inserer ton controle dans un projet qui.... charge des données, par exemple, je ne peux modifier la valeur contenue !! (.Value=16) !!
------------------------------------------------------------------------------
non, ce qu'il te faut faire, c'est :

Private Sub TextNum_KeyPress(KeyAscii As Integer)
'permet d'effectuer des copier coller
If KeyAscii 22 Or KeyAscii 3 Or KeyAscii = 24 Then Exit Sub

'pour s'amuser avec la virgule... essaye !!
If KeyAscii Asc(".") Or KeyAscii Asc(",") Then
a = TextNum.SelStart
TextNum.Text = Replace(TextNum.Text, ".", vbNullString)
TextNum.Text = Replace(TextNum.Text, ",", vbNullString)
TextNum.SelStart = a
Else
'si ce n'est pas un chiffre , met 0, la touche est ignorée
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End If
End Sub

Private Sub TextNum_Change() 'Filtre à saisie numérique
On Error Resume Next
Dim Txt As String
'on ôte les virgules
Txt = Replace(TextNum.Text, ".", vbNullString)
Txt = Replace(Txt, ",", vbNullString)
If IsNumeric(Txt) Then
RaiseEvent Change
Else
TextNum.Text = 0
TextNum.SelStart = 1
End If
End Sub

Public Property Let Value(new_Value As Variant)
'on mémorise l'ancienne valeur
'on affecte la nouvelle, si celle-ci a été enlevée par les autres tests, on remet l'ancienne
'cela signifie en effet que la chaine n'est pas valide....
Dim oldValue As Long
oldValue = TextNum.Text
TextNum.Text = new_Value
If TextNum.Text <> new_Value Then
TextNum.Text = oldValue
End If
End Property

'Lecture propriété texte
Public Property Get Value()
Value = TextNum.Text
End Property

-----------------------------------------------------------------------------

bon, cote virgules, il faudrait ajouter dans mon code la verification que sur un copier coller, on ajoutes pas qqchose avec quatres virgules. Il faudrait egalement pouvoir mettre .5 et que ca soit transformé en 0.5