IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET 2003] Class not registered


Sujet :

Windows Forms

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut [VB.NET 2003] Class not registered
    Bonjour à tous,

    Au risque de poser une question qui a déjà posée (faire une recherche sur "class not registered" pose problème), la voici.

    J'ai développé une application en VB.NET avec VS2003. Elle fonctionne nickel sur ma machine.

    Je l'ai mise sur une autre qui sert de server. J'y ai également mis la DB sql server (j'ai créé le server et tout, ça marche).

    Sur cette machine, elle tourne bien. Si je la lance depuis ma machine de développement, ça marche nickel aussi (mis à part une p'tite config à faire au niveau du framework sur les machines clients pour pouvoir lancer une appli depuis un share folder).

    Mais si je la lance depuis une autre machine, elle se lance bien pour une fenêtre, j'ai l'erreur "Class not registered".

    Si bien compris dans mes recherches, c'est à cause de la dll qui gère les MaskTextBox. En VS2003, le composant n'existe pas par défaut, j'ai donc pris un ActiveX.

    Comment faire pour éviter cette erreur ? J'ai tente un regsvr32 sur l'ordi de mon collègue qui m'assiste pour les tests mais ça ne fonctionne même pas.
    Il ne trouve pas "l'entry point". Je ne sias pas du tout ce que ça veut dire.

    Voilà, si quelqu'un à une solution pour ça, je suis preneur.

    Merci d'avance.

    Griftou.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    il faut que le framework soit bien installé

    et pour les dll COM
    regsvr32 suivi du nom (incluant le chemin) de la dll (tant qu'à faire, mettre la dll à coté de l'exe)
    si tu fais ca dans une fenetre commande, tu verras si l'insciption de la dll réussi

    si elle réussi, ca doit fonctionner

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    C'est bien une dll COM.
    Elle se trouve bien dans le même répertoire que l'exe.

    Sur la machine où se trouve l'exe, ça tourne bien.

    Sur une autre, ça passe pas.

    J'ai voulu faire un regsvr32 dans le cmd de windows mais pas moyen... "Entry point not found".

    Quoi qu'il en soit, j'aimerais ne pas avoir à faire un regsvr32 sur chaque machine qui va utiliser cette appli.

    Est-ce possible ?

    Griftou.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    non
    c'est l'architecture COM ... comme à l'époque de VB6
    pour ca qu'en général sur un projet vb.net on ne mets que des références dll .NET
    les setup.exe de l'époque passait leur temps à inscrire les dll, avec un programme .NET un setup n'est pas forcément necessaire

    et vu que toi c'était juste pour avoir un MaskTextBox je te conseille de t'en faire un toi meme, ca prend pas énormément de temps

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    J'y ai pensé mais je ne sais pas comment faire

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    tu t'en sers pour quoi ton masktextbox ?

    normalement c'est pas très dur à faire (ca peut etre long si on veut que ca soit parfait et sans faille)
    ca se fait dans keypress et textchanged en général

    je peux te faire un MaskTextBox si tu me dis ce que tu veux qu'il fasse exactement
    (et si t'as vérifié que ca existe pas dans VS2003 (car ca existe surement dans VS2005))

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    C'est juste pour entrer une date.

    Il existe bien dans VS2005 mais pas encore dans le 2003.

    Merci en tout cas !

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    et tu veux qu'il y ait __/__/____ quand c'est vide ? que ca autorise de perdre le focus que si c'est une date ? autre chose ?

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    yep, les trucs classiques quoi

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    remarque ca sert pas à grand chose un textbox pour mettre les date
    tu dois bien avoir un controle style calendar ou monthview qui ressemble à un textbox et que quand tu clic dessus ca ouvre un calendrier

  11. #11
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Oui oui je sais bien mais je voudrais que pouvoir tester si l'utilisateur à entrer une date ou non car c'est dans dans un formulaire de recherche et je dois savoir si je dois utiliser la date comme critère ou non.

    Avec un DateTimePicker, il y a toujours une date d'inscrite et je ne vois pas comment savoir si je dois prendre la date comme critère ou non.

    T'aurais pas un bon tuto pour apprendre à faire ça ? Comme ça je peux regarder pour apprendre à le faire moi-même.

    Griftou.

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    voici un code qui doit être à peu près fonctionnel
    c'est un textbox amélioré dans lequel on dit ce qu'on stocke (propriété TextType) parmis texte, nombre entier, nombre décimal ou date

    y a moyen de l'améliorer en mettant des mini maxi pour les nombres et les dates, les caractères autorisés ou non autorisés, un nombre de carac max etc...

    et puis faudrait trouver un moyen propre de vider la case pour si on ne veut plus mettre de date
    peut etre un bouton à gauche du bouton pour choisir la date
    parce que pour l'instant la touche suppr fonctionne et donc on peut supprimer un morceau de la date
    enfin tu peux tester à n'importe quel moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Not IsDate(FTextbox1.Text) Then


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
     
    Public Class FTextbox
        Inherits System.Windows.Forms.TextBox
     
     
        Private _SeparateurDecimal As Char
        Private WithEvents _Calendrier As System.Windows.Forms.DateTimePicker
     
        Public Enum liste_texte
            texte = 0
            nombre_entier = 1
            nombre_decimal_2_decimales = 2
            nombre_decimal_4_decimales = 3
            date_ = 4
        End Enum
     
     
     
        Public Sub New()
            Me.TexteType = liste_texte.texte
            _SeparateurDecimal = CChar(My.Application.Culture.NumberFormat.NumberDecimalSeparator)
        End Sub
     
     
     
        Private _TexteType As liste_texte
        Public Property TexteType() As liste_texte
            Get
                Return _TexteType
            End Get
            Set(ByVal value As liste_texte)
                If _TexteType = value Then Exit Property ' pas de changement
     
                _TexteType = value
                Me.Text = "" ' quand cette propriété est modifiée, on efface
                If value = liste_texte.date_ Then
                    Me.Text = "__/__/____"
                    If _Calendrier Is Nothing Then _Calendrier = New System.Windows.Forms.DateTimePicker
                    Affiche_Calendrier()
                Else
                    If _Calendrier IsNot Nothing Then
                        _Calendrier.Dispose()
                        _Calendrier = Nothing
                    End If
                End If
     
            End Set
        End Property
     
     
     
     
        Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
            'la touche suppr ne déclenche pas de keypress je crois
     
            Select Case _TexteType
                Case liste_texte.texte
                    'on accepte tout donc on ne fait rien
                Case liste_texte.nombre_entier
                    GestionKeyPressNombre(e, 0)                     ' e est passé en byref pour que les modifications distantes soit gardées
                Case liste_texte.nombre_decimal_2_decimales
                    GestionKeyPressNombre(e, 2)
                Case liste_texte.nombre_decimal_4_decimales
                    GestionKeyPressNombre(e, 4)
                Case liste_texte.date_
                    e.KeyChar = CChar("")
            End Select
     
            MyBase.OnKeyPress(e)
     
        End Sub
     
     
     
        Private Sub GestionKeyPressNombre(ByRef e As System.Windows.Forms.KeyPressEventArgs, ByVal nombre_decimales_acceptees As Byte)
            Try
                If Asc(e.KeyChar) = 8 Then ' touche del 
                    If Me.SelectionStart = 0 AndAlso Me.Text.Chars(Me.SelectionLength) = _SeparateurDecimal Then
                        'si on sélectionne tout ce qui est avant une virgule et qu'on efface ca devrait faire ",xx" alors on fait comme si qu'on avait tapé 0 pour faire "0,xx"
                        e.KeyChar = CChar("0")
                    Else
                        Exit Sub
                    End If
                End If
     
                If e.KeyChar = "." Or e.KeyChar = "," Then e.KeyChar = _SeparateurDecimal
     
                If Not ("0123456789" & _SeparateurDecimal).Contains(e.KeyChar) Then 'le caractère n'est ni un chiffre ni la virgule
                    e.KeyChar = CChar("")
                    Exit Sub
                End If
     
                If e.KeyChar = _SeparateurDecimal And nombre_decimales_acceptees = 0 Then 'la virgule est interdite pour un nombre entier
                    e.KeyChar = CChar("")
                    Exit Sub
                End If
     
                'le caractère n'est pas encore tapé dans le textbox dans cet évènement
                'il ne sera pas forcément au bout du textbox, ca dépend d'où est le curseur et faut faire attention aussi à ce qui est sélectionné
                Dim texte_que_ca_sera As String
                If Me.SelectionLength = 0 Then
                    texte_que_ca_sera = Me.Text.Substring(0, Me.SelectionStart) & e.KeyChar & Me.Text.Substring(Me.SelectionStart, Me.Text.Length - Me.SelectionStart)
                Else
                    texte_que_ca_sera = (Me.Text.Substring(0, Me.SelectionStart) & e.KeyChar) & Me.Text.Substring(Me.SelectionStart + Me.SelectionLength, Me.Text.Length - Me.SelectionStart - Me.SelectionLength)
                End If
     
                If Not IsNumeric(texte_que_ca_sera) Then
                    e.KeyChar = CChar("")
                    Exit Sub
                End If
     
                If Not texte_que_ca_sera.Contains(_SeparateurDecimal) Then Exit Sub ' pas de problème possible
     
                'vérification du nombre de décimales
                Dim nombre_de_chiffres_apres_la_virgule As Integer
                nombre_de_chiffres_apres_la_virgule = (texte_que_ca_sera.Substring(texte_que_ca_sera.IndexOf(_SeparateurDecimal), _
                                                                    texte_que_ca_sera.Length - texte_que_ca_sera.IndexOf(_SeparateurDecimal) - 1)) _
                                                                            .Length
     
                If nombre_de_chiffres_apres_la_virgule > nombre_decimales_acceptees Then
                    e.KeyChar = CChar("")
                    Exit Sub
                End If
     
            Catch ex As Exception
                e.KeyChar = CChar("")
                Exit Sub
            End Try
        End Sub
     
     
     
     
        Private Sub Affiche_Calendrier()
            Me.Controls.Add(_Calendrier)
            _Calendrier.Top = -2
            _Calendrier.Left = Me.Width - 22
            _Calendrier.Width = 18
            _Calendrier.Height = Me.Height
            _Calendrier.DropDownAlign = LeftRightAlignment.Right
     
        End Sub
     
        Private Sub AfficheDate(ByVal sender As Object, ByVal e As System.EventArgs) Handles _Calendrier.ValueChanged
            Me.Text = _Calendrier.Value.ToShortDateString
        End Sub
     
     
    End Class

    au départ j'étais partis su gérer la date au keypress, mais c'est un peu du nimp ...

  13. #13
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Ok et maintenant ?
    Je crée un projet Windows Control Library, j'utilise ton code et hop j'ai ma dll ?

    Sinon, tu pourrais m'expliquer le raisonnement que t'as suivi pour faire ça ?

    Pcq j'essaie aussi d'en faire un (c'est tjs bon à savoir) mais je suis un peu perdu.

    Merci en tout cas !

    Griftou.

  14. #14
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    pas besoin de dll si ton programme est pas énorme
    une dll est utile pour trier quand on a trop de choses dans l'appli (dans une dll tu peux mettre exactement la meme chose que dans un projet sauf que tu peux pas l'executer directement)

    tu ajoutes un fichier de classe
    tu génère ton projet
    puis tu dans ta boite à outils du dois avoir ce nouveau textbox

    et tu le poses sur tes feuilles


    le code est pas très long et commenté, lit tout pour comprendre
    de plus j'ai mis des pistes d'amélioration, donc rien ne t'empeche de le compléter et de revenir le poster ici

Discussions similaires

  1. Com Object - Class not registered
    Par Kentin dans le forum Windows Embedded
    Réponses: 1
    Dernier message: 30/12/2010, 15h13
  2. [vb6] exe autonome "classe not registered"
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/03/2009, 09h01
  3. c# erreur:" Class not registered"
    Par tafoune dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 26/03/2008, 16h11
  4. Classe VS.Net 2005 basée sur interface VS.Net 2003 ?
    Par dotnet dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/02/2007, 10h37
  5. TXMLCursor - Class not registered
    Par Jeweller dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/04/2005, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo