Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

USERCONTROL RICHTEXTBOX CORRECTEUR D'ORTHOGRAPHE


Information sur la source

Catégorie :Control Classé sous : richtextbox, correction, user, control, troulalaitoo Niveau : Initié Date de création : 12/05/2006 Date de mise à jour : 15/05/2006 18:58:33 Vu / téléchargé: 6 545 / 1 017

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Ce UserControl permet de faire des propositions de mots à l'utilisateur au fur et à mesure de la saisie.
C'est surtout à titre de tuto que cela pourra être utile, parce qu'il y a quand même quelques inconvénients :
- La base de données (DB) qui stocke les mots fait ... 21 Mo - Pas facile à transporter !
- Pour tenter de le poster ici, je joins un fichier texte avec plus de 330.000 mots. Le fichier fait 3.9Mo.
  Une première application vous permettra de créer la DB chez vous (15 minutes)
- Il suffira de copier la DB générée sur le répertoire où se trouve l'application principale de démo
- Le composant est lent, ça se comprend un peu.

Les paramètres propres au UserControl commencent tous par "DB_" :
DB_AvecCorrecteur : Permet d'inhiber la fonction
DB_IgnorerMotAvecChiffres : Ne fera pas de recherche si le mot en cours comporte des chiffres
DB_IgnorerMotEnMajuscule : Ne fera pas de recherche si le mot n'est composé que de majuscules
DB_NbrLettresMini : Nombre de lettres saisies à partir duquel on commence à interroger la DB
DB_NbrMotsMaxi : Nombre de mots maxi pour afficher la liste
DB_TimeOut_mSec : Durée maximum du questionnement de la DB
Avec la méthode DB_AjouterMot, vous pourrez rajouter des mots dans la DB si besoin.
Toutes les autres propriétés, méthodes et évènements du UserControl sont ceux d'un RichTextBox standard.

Les recherches de mots compatibles avec les lettres saisies sont de plusieurs types :
- Mots commençant par les lettres connues
- Mots dont 2 lettres sont inversées (dyslexie) (regSItre -> regIStre)
- Mots qui ont un caractère en trop (sOOurce -> sOurce)
- Mots dont on a oublié d'entrer une des lettres (apeler -> apPeler)
- Mots dont une des lettres est fausse (apOeler -> apPeler)
- Mots qui ressemblent (méthode SoundEx)

De plus, la liste proposée est placée dans une forme à part, pas dans une ListBox implantée sur le RichTextBox. De cette manière, la liste peut déborder de la forme de l'application. Pas facile à mettre au point, mais c'est beaucoup plus mieux qu'une liste dont on ne verrait pas les lignes parce qu'on écrit en bas du RTB.

 

Conclusion

J'ai pris la peine de bien commenter la source.
Elle n'a pas de réelle utilité, mais les méthodes utilisées sont intéressantes.

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

12 mai 2006 04:29:35 :
Copie d'écran
13 mai 2006 17:18:03 :
Correction -> mise à jour Zip
15 mai 2006 18:58:33 :
MàJ application pour corriger erreur signalée par Mickael

Commentaires et avis

signaler à un administrateur
Commentaire de jmberriot le 13/05/2006 10:45:14

   Trés interessant

         J'ai rajouté 2 menus contextuels  (Supprimer mot et Ajouter mot)  
           mais >>>>

dans la   Function DB_AjouterMot

>>>>>>>>>>>Signale Erreur : "Mots" non trouvé
'---------------- Ok, on l'insère
    SQL = "Insert Into Mots (Mot, Soundex) " & "Values ('" & Texte & "', '" & xDB_SoundEX(Texte) & "')"


>>>>>>>>>>>> Remplacé par
'---------------- Ok, on l'insère
    SQL = "Insert Into Mots_" & sLettre & " Values ('" & Texte & "', '" & xDB_SoundEX(Texte) & "')"
>>>>>>>>>> et ça marche.....
      

                Pas assez doué sur les bases  alors d'ou vient l'erreur , si tu as une idée à l'occasion

  JMB  Bonne programmation

signaler à un administrateur
Commentaire de jack le 13/05/2006 17:16:46 administrateur CS

Exact, JM, je n'avais pas corrigé cette requète.
En fait, au début, tous les mots se trouvaient dans une seule table et j'ai modifié la structure après, pensant que ça rendrait plus rapide les recherches. Ca n'a pas changé grand chose. Je mets à jour le Zip.
Une fois cette correction faite, tout fonctionne. Tu as encore une erreur ?

signaler à un administrateur
Commentaire de jmberriot le 13/05/2006 18:23:38

    Non c'est impec
   Maitrisant mal les bases de données je craignais des données perdues, déplacées ou écrasées  j'ai eu des déboires dans un prog perso où des blocs de dizaines de données se trouvaient déplacées à l'ouverture sans raison apparente ; problème jamais résolu alors je manipule les données dans fichier txt mais il devient trop gros ........ en attendant merci pour la reponse
            JMB

signaler à un administrateur
Commentaire de Mikaels35 le 15/05/2006 08:45:16

Salut Jack

J'essaie de tester ton programme, mais jobtiens cette erreur quand je fais la conversion TXT->MDB !

"-2157217865- Le moteur de base de données Microsoft Jet ne peut pas trouver la table ou la requête source 'Mots'.
Asssurez-vous qu'elle existe et qu'elle est correctement orthographiée."

Que dois-je faire pour pouvoir mener à bien cette conversion ?

Merci d'avance

@+

signaler à un administrateur
Commentaire de Renfield le 15/05/2006 13:27:07 administrateur CS

remplace simplement :

'SQL = "Delete * From Mots"

par :
    Dim nDeleteCount As Long
    For ff = 65 To 90
        SQL = "Delete From [Mots_" & Chr$(ff) & "]"
        maDB.Execute SQL, Nb
        nDeleteCount = nDeleteCount + Nb
    Next ff

signaler à un administrateur
Commentaire de Mikaels35 le 15/05/2006 16:54:26

Merci beaucoup Renfield, ça marche impec !

@++

signaler à un administrateur
Commentaire de jack le 15/05/2006 18:51:58 administrateur CS

lol, merci Renfield
Encore une correction que je n'ai pas faite après ma modif organisationnelle.
Je corrige le zip dans la foulée.

signaler à un administrateur
Commentaire de HAJYAHIA le 08/05/2007 15:32:07

ou est le code source ?

signaler à un administrateur
Commentaire de jack le 08/05/2007 15:45:53 administrateur CS

Salut à toi aussi Hajyahia
Il te faut cliquer sur "Télécharger le Zip", les sources sont dedans.

signaler à un administrateur
Commentaire de amita le 19/05/2008 20:17:35

comment ajouter un mot ? liste par la fonction DB_AjouterMot
avec un menu contextuelle

signaler à un administrateur
Commentaire de Renfield le 20/05/2008 08:36:15 administrateur CS

pardon ?

signaler à un administrateur
Commentaire de jack le 20/05/2008 15:15:02 administrateur CS

Salut Amita
En effet, cette fonction n'est appelée par personne.
Encore un 'truc' que j'avais prévu et que je n'ai pas utilisé.
A priori, la fonction devrait fonctionner.
Suffirait d'ajouter un menu contextuel (*) qui sélectionnerait le mot sous le curseur et qui enverrait ce mot dans la function :
(*) Menu contextuel : Voir la commande PopupMenu + l'aide + les sources de vbfrance

If ucRTBCorrecteur1.DB_AjouterMot(leMot) Then
   Status.Panels(1).Text = "Mot """ & leMot & """ ajouté au dictionnaire."
Else
   ' Pas la peine d'écrire un message, le composant s'occupe d'envoyer un
   ' RaiseEvent pour donner la cause du refus
End If

signaler à un administrateur
Commentaire de amita le 20/05/2008 18:09:00

le problème se pose quand je met

If ucRTBCorrecteur1.DB_AjouterMot(ucRTBCorrecteur1.text) Then
   Status.Panels(1).Text = "Mot """ & ucRTBCorrecteur1.text & """ ajouté au dictionnaire."
Else
   ' Pas la peine d'écrire un message, le composant s'occupe d'envoyer un
   ' RaiseEvent pour donner la cause du refus
End If

cad que ucRTBCorrecteur1.text est une variable de text

signaler à un administrateur
Commentaire de jack le 20/05/2008 19:34:32 administrateur CS

"ucRTBCorrecteur1" est bien le nom du composant sur ta forme hôte ?
Appelles-tu cette fonction depuis le code de ta forme hôte ou bien depuis le code du UserControl (UC) ? Dans ce cas, bien sûr, il faut utiliser le nom de la RTB dans le UC !

Dans l'exemple, là, tu passes le texte entier de la RTB !
Il faut récupérer le seul et unique mot à insérer (à faire en t'inspirant du découpage de texte déjà présent dans le code).
Quelle erreur as-tu ?
Quel est le comportement du programme ?
La fonction accepte une chaine 'String'

signaler à un administrateur
Commentaire de amita le 21/05/2008 17:01:07

j'ai cr?e le menu
Private Sub mnuAjouterMot_Click
ucRTBCorrecteur.DB_AjouterMot rtbTexte.Text
End Sub
dans le control lui m?me le probl?me

c'est que ucRTBCorrecteur ne reconnais pas DB_AjouterMot
il me signale l'erreur ucRTBCorrecteur variable non d?finie

merci

signaler à un administrateur
Commentaire de jack le 21/05/2008 19:00:44 administrateur CS

Mais pourquoi veux-tu à tout prix lui transmettre le texte entier ?
Il s'agit d'ajouter un mot, pas plus.

Si tu travailles DANS le UC, il ne faut pas y faire référence.
Exemple d'utilisation du menu en question :
Private Sub mnuAjouterMot_Click()
    Dim Texte As String
    Texte = InputBox("Quel mot voulez-vous ajouter au dictionnaire ?", _
                     "Ajout de mot au dico", "")
    If Texte = "" Then Exit Sub
    DB_AjouterMot (Texte)
End Sub

signaler à un administrateur
Commentaire de jack le 21/05/2008 19:04:39 administrateur CS

Dans ton cas, si tu avais voulu entrer tout ton texte dans le dictionnaire (impossible), il aurait fallu entrer la commande :
  Call DB_AjouterMot(rtbTexte.Text)
car l'objet qui contient le texte DANS le UC est la RichTextBox, pas le UC lui même qui est un ensemble de composants.
Par contre, depuis ta forme hôte qui héberge un exemplaire du UC, il n'existera que le ucRTBCorrecteur1 et ses fonctions.

signaler à un administrateur
Commentaire de amita le 21/05/2008 20:49:35

merci jack c'est r?solu

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

pb avec les controls (URGENT) [ par zeDevil ] Salut !Voilou, j'développe un user control dans lekel je voudrais mettre un control ListBox entièrement accéssible par l'utilisateur du user control.. realisation d'un scroll dans un control richtextbox [ par kequo ] Je dois réaliser un scroll sur un RichTextBox sans pour cela utiliser les scrollbar.Si vous avez une solution... merci RcihTextBox et ScrollBar (VB 6) [ par pdl ] J'ai un contrôle RichTextBox définit comme multiline et avec scrollbars (Horz et Vert). Lorsqu'une ligne est trop longue elle est automatiquement renv VB.NET-> (Help) WEB USER Control gros problème. [ par shinta59 ] Bonjour,mon but est d'afficher un web user control à chaque clic de bouton.voilà mon code aspx:Dim ctl As WebUsercomm2ctl = LoadControl("WebUsercomm2. User Control Transparent avec degré de transparence [ par Afyn ] Bonjour, j'ai rouvé du code pour rendre une Form transparente, ainsi que ses Controls fils d'ailleurs, mais je n'ai pas réussi a faire fonctionner ce Un icon pour mon control !! [ par pluplu ] Bonjour à tousJ'ai bientôt terminer un petit control fort utile pour les application de gestion d'horaire et que je ne manquerai pas à mettre à dispo. PB USER CONTROL [ par gi ] Bonjour,J'aimerais pouvoir voir le descriptif d'une propriété d'un user control dans l'explorateur d'objet.Je ne sais pas comment faire.Pouvez vous m' COMMENT CREER UN CONTROL USER [ par DHN93160 ] CHERS AMISQUELQU'UN POURRAIT-IL M'AIDER. COMMENT CREER UN CONTROL USER SOUS VB 6. L'OUVRIR COMME FORM ET L'ENREGISTER SOUS *.CTL? ET APRES FAUT-IL L'E Champ de donnee dans user control [ par RV2931 ] Bonjour,Je suis un peu novice en VB et j'ai créé un user control du genre Joystick qui doit renvoyer un Angle (0 360 °) et une Norme. L utiliser variable d'un user control - URGENT [ par RV2931 ] Bonjour,Je suis un peu novice en VB et j'ai créé un user control du genre Joystick qui doit renvoyer un Angle (0 360 °) et une Norme. L


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.