Santiago Bosio
Thu, 17 Nov 2005 07:18:27 -0800
El mar, 15-11-2005 a las 04:10, Cristina Castilla escribió:
> Hola, comunidad: soy profesora de lengua y me gustaríaa que mis alumnos
> pudieran
> registrar las palabras que le corrige el corrector ortográfico, para
> que puedan conocer los términos que fallan normalmente y tener un
> listado de ellos. Lo he intentado creando un "nuevo diccionario de
> usuario", pero al añaadirlas con los errores, el programa ya no vuelve
> a reconocerlas como fallos y las admite como correctas. ¿Alguien puede
> darme alguna idea al respecto? Gracias.
Cristina:
No creo que puedas resolverlo a través de los diccionarios de usuario,
porque precisamente su utilidad es la de agregar palabras correctas, que
no están en el diccionario principal.
He escrito una pequeña macro que te permitirá extraer el listado de
palabras incorrectas en un documento aparte. Debieras guardarla, y
ejecutarla sobre los documentos Writer antes de empezar a corregirlos.
Pego el código a continuación:
'-- Copiar desde aquí
REM ***** BASIC *****
Sub ListarPalabrasIncorrectas
Dim oDocModel as Variant
Dim oTextCursor as Variant
Dim oLinguSvcMgr as Variant
Dim oSpellChk as Variant
Dim oListDocFrame as Variant
Dim oListDocModel as Variant
Dim sListaPalabras as String
Dim aProp(0) As New com.sun.star.beans.PropertyValue
' Obtener acceso al documento actual
oDocModel = StarDesktop.CurrentFrame.Controller.getModel()
If IsNull(oDocModel) Then
MsgBox("No hay ningún documento activo." + Chr(13) + _
"Abra un documento de Writer antes de activar esta
macro.")
Exit Sub
End If
' Verificar que este sea un documento de texto
If Not HasUnoInterfaces (oDocModel, "com.sun.star.text.XTextDocument")
Then
MsgBox("Este documento no soporta la interfaz 'XTextDocument'."
+ Chr(13) + _
"Utilice esta macro únicamente con documentos de
Writer.")
Exit Sub
End If
' Obtener un cursor de texto y posicionarlo al principio del documento
oTextCursor = oDocModel.Text.createTextCursor()
oTextCursor.gotoStart(False)
' Obtener una referencia al corrector ortográfico o morir en el intento
oLinguSvcMgr =
createUnoService("com.sun.star.linguistic2.LinguServiceManager")
If Not IsNull(oLinguSvcMgr) Then
oSpellChk = oLinguSvcMgr.getSpellChecker()
End If
If IsNull (oSpellChk) Then
MsgBox("No se pudo acceder a un corrector ortográfico." +
Chr(13) + _
"Verifique las opciones de lingüística de su
instalación.")
Exit Sub
End If
' Iterar sobre todas las palabras que contiene el documento
Do
If oTextCursor.isStartOfWord() Then
oTextCursor.gotoEndOfWord(True)
' Verificar si la palabra está bien escrita
If Not oSpellChk.isValid(oTextCursor.getString(),
oTextCursor.getPropertyValue("CharLocale"), aProp()) Then
sListaPalabras = sListaPalabras +
oTextCursor.getString() + Chr(13)
End If
oTextCursor.collapseToEnd()
End If
Loop While oTextCursor.gotoNextWord(False)
If Len(sListaPalabras) = 0 Then
MsgBox("No hay errores ortográficos en el documento.")
Exit Sub
End If
' Buscar el frame que contiene la lista (o crearlo)
oListDocFrame = StarDesktop.findFrame("fListarPalabrasIncorrectas",
com.sun.star.frame.FrameSearchFlag.ALL)
If IsNull(oListDocFrame) Then
oListDocModel =
StarDesktop.loadComponentFromURL("private:factory/swriter",
"fListarPalabrasIncorrectas", com.sun.star.frame.FrameSearchFlag.CREATE,
aProp())
oListDocFrame = oListDocModel.CurrentController.getFrame()
Else
oListDocModel = oListDocFrame.Controller.getModel()
End If
' Obtener un cursor de texto para este documento
oTextCursor = oListDocModel.Text.createTextCursor()
oTextCursor.gotoEnd(False)
' Escribir la lista
oListDocModel.Text.insertString (oTextCursor, sListaPalabras, False)
' Activar este frame
oListDocFrame.activate()
' ¡Y ya terminamos!
End Sub
'-- Copiar hasta aquí
Pruébalo y me cuentas si funcionó.
Saludos,
Santiago Bosio
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]