HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Helyesírás ellenőrzése saját alkalmazásban


Példaprogram letöltése

8989 bájt

Ha azon a gépen telepített az MS Word, melyen saját alkalmazásunk is fut, akkor a programunkban felhasználhatjuk a Word helyesírás-ellenőrzőjét anélkül, hogy a felhasználó észrevenné, hogy a Word dolgozik a háttérben. A megoldás eredménye az lesz, hogy a felhasználó észre sem veszi, hogy ténylegesen nem is a mi alkalmazásunk ellenőrzi a helyesírást, mely akár egy TextBox-ban lévő szövegre is futhat. A helyesírás ellenőrzése közben, ha hibás szót talál a Word, akkor ennek javítását is saját programunkban oldhatjuk meg úgy, hogy a Word által javasolt szavakat megjelenítjük a felhasználónak, hogy válassza ki, melyikre cseréjük ki a hibás szót.

A feladat a következő: a textBox1-ben lévő szövegnek a helyességét szeretnénk ellenőrizni. Ha vannak benne hibás szavak - márpedig tettünk bele -, akkor ezek javítása után a helyes szöveg a textBox2-ben jelenjen meg. Az egész művelet elvégzéséhez létrehoztunk egy CheckString nevű függvényt.
  Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    textBox2.Text = CheckString(textBox1.Text)
  End Sub 'button1_Click
A CheckString függvényben a következőképpen vizsgáljuk a sztringet: ahhoz, hogy a Word elvégezhesse a vizsgálatot, a kapott sztringet szavakra kell bontanunk. A Word minden egyes szót megvizsgál, és ha hibásnak találja, akkor ezt jelzi. Hibás szó esetén kapunk a Word-től egy listát, melyben azokat a szavakat adja meg, melyekre a hibás szó cserélhető. Ekkor megjelenítünk egy másik Form-ot a felhasználónak, hogy ebből a listából választhasson.
  Private Function CheckString(ByVal Str As String) As String
    Dim w As String = ""
    Dim result As String = ""
    Dim b As Boolean = False
A szavakra történő bontást úgy végezzük el, hogy karakterenként végigmegyünk a kapott sztringen, hogy az eredménybe is bekerüljön a szöveg összes karaktere. Ha egy olyan karakter találunk, mely nem szám és nem betű, akkor tudhatjuk, hogy az aktuális szónak vége, lehet ellenőriztetni. Ha nem így lenne, akkor még tart a szó, így az aktuális karaktert is eltároljuk a w nevű sztring típusú változóba.
    Dim c As Char
    For Each c In Str
      If [Char].IsLetterOrDigit(c) Then
        w += c
        b = False
      Else
        If Not b Then
Ha megtaláltuk a következő szót, akkor meghívjuk a CheckWord nevű belső függvényünket, mely elvégezteti a Word-el az aktuális szó vizsgálatát. Ha ez szó helyes, akkor igaz értékkel tér vissza, így a szót tárolhatjuk az eredményben.
          If CheckWord(w) Then
            result += w
          Else
Abba az esetben, ha az aktuális szó hibás, akkor megjelenítjük a második Form-unkat, melyen a felhasználó választhat egy helyes szót a hibás helyett. A hibás szót, illetve a jó szavak listáját a Form-nak a ReplaceWord függvényen keresztül adjuk át, majd ShowDialog függvénnyel megjelenítjük.
            f.ReplaceWord(w, wordlist)
            If f.ShowDialog() = DialogResult.OK Then
Ha a felhasználó úgy döntött, hogy a hibás szót cseréli egy másikra, akkor az eredményhez a felhasználó által választott szót adjuk hozzá, melyet a Form NewWord property-jén keresztül érünk el.
              result += f.NewWord
            Else
Ha a felhasználó nem akarja cserélni a szót, akkor az eredményhez a Word szerint hibás szót adjuk hozzá.
              result += w
            End If
          End If
          b = True
Hogy a szöveg írásjelei se vesszenek el az eredményből, minden ilyen típusú karaktert is hozzá kell adnunk az eredményhez.
        result += c
        w = ""
      End If
    Next c
Miután a ciklusunk végigment a kapott szöveg összes karakterén, addigra a result változónkba került a már javított szöveg, így a függvényünk ezzel az értékkel térhet vissza.
    Return result
Nézzük most, miként ellenőriztethetünk a Word-del egy-egy szót. Ehhez készítettük a CheckWord függvényt. Mire a programunk futása ideér, már létező kapcsolattal kell rendelkeznünk a Word-höz. A helyesírás nem működik, ha nincs megnyitott dokumentum, ezért a Word létrehozása után nyitunk egy új üres dokumentumot. Mivel a Word alkalmazás Visible property-jét nem állítottuk igazra, így maga a Word nem jelenik meg, az a felhasználó által láthatatlan marad. Ezzel biztosítjuk azt, hogy a felhasználó észre sem veszi, hogy a háttérben a Word-öt használtuk a helyesírás ellenőrzésére.
Az adott szó helyességének ellenőrzésére a CheckSpelling függvény alkalmas. Az ellenőrizendő szót kell megadni az első paraméterben. Ha a függvény visszatérési értéke hamis, akkor a szó hibás.
  Private Function CheckWord(ByVal word As String) As Boolean
    If Not wa.CheckSpelling(word, ...) Then
Hibás szó esetében a GetSpellingSuggestions függvény hívásával kérünk egy listát azokról a szavakról, melyek megfelelnének a hibás helyett.
      Dim ss As Word.SpellingSuggestions = wa.GetSpellingSuggestions(word, ...)
A kapott SpellingSuggestions osztály elemein egy ciklussal megyünk végig, és sorban kiolvassuk a szavakat, majd tároljuk egy sztringeket tartalmazó tömbbe.
      wordlist = New String(ss.Count) {}
      Dim i As Integer
      For i = 1 To ss.Count
        wordlist((i - 1)) = ss.Item(i).Name
      Next i
Form 2
Hibás szó esetén kerül megjelenítésre a Form2, melyben egy listát kell mutatnunk a felhasználónak, amelyben a hibás szó helyett ajánlott szavak láthatók.
A Form2 ReplaceWord függvényén keresztül kapjuk meg ezt a listát, melyet egy rendezett ListBox-ba töltünk. Ha a felhasználó választ ebből a listából és a Csere gombra kattint, akkor a newWord sztring típusú változóba kerül a választott szó. Ennek tartalmát a NewWord property-n keresztül lehet majd kiolvasni.
Ha a felhasználó a Mégsem gombra kattint, akkor a hibás szó nem lesz kicserélve, hanem változatlan formában bekerül az eredménybe.
Mindkét gomb esetén bezárjuk a Form-ot a Close függvény hívásával. A Form megjelenítésekor azonban el kell döntenünk, melyik gombbal is történt a bezárás, hogy tudjuk, kell-e cserélni az adott szót. Ezt úgy oldjuk meg, hogy a Csere gomb esetén a DialogResult property értékét OK-ra állítjuk, míg a Mégsem gombnál itt a Cancel értéket választjuk.



Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |