![Photo](http://delphiaccess.com/foros/uploads/profile/photo-12739.png?_r=0)
[RESUELTO] Usando Word como corrector ortográfico en un TDbMemo.
#1
Posted 20 September 2010 - 09:45 AM
Si tuviesen una sugerencia, ayuda o muestra de apoyo, se las agradeceré muchísimo.
#2
Posted 20 September 2010 - 09:52 AM
En su día necesité algo parecido y buscando por internet di con un hilo de CD, éste
http://www.clubdelph...tor ortografico
Me quedé con la solución de Roman, el usar la ISpell
Nos leemos
#3
Posted 20 September 2010 - 09:53 AM
uses ComObj, ClipBrd, ShellApi; procedure TForm1.Button1Click(Sender: TObject); var WindowName: string; WindowHandle: Cardinal; WordApp, Document, Selection: OleVariant; begin WordApp := CreateOleObject('Word.Application'); Document := WordApp.Documents.Add; Selection := WordApp.Selection; Selection.TypeText(memo1.Text); // Para que no salga la ventana del Word despues de revisar la gramtica/ortografia WindowName := WordApp.ActiveDocument.FullName + ' - ' + WordApp.Application.Caption; WindowHandle := 0; WindowHandle := FindWindow(nil, pChar(WindowName)); SetWindowRgn(WindowHandle, CreateRectRgn(0,0,0,0), true); // Empezamos revisar la ortografia WordApp.ActiveDocument.CheckGrammar; Selection.WholeStory; Selection.Copy; Edit1.Text := Clipboard.AsText; // Mandamos a cerrar el Word con el programa TSkill ShellExecute(Handle, nil, 'tskill', 'winword', nil, sw_hide); end;
Puedes aplicar ese código aunque según leí que es algo lento pero depende en el tipo de maquina y la capacidad que tenga.(fuente clubdelphi)
#4
Posted 20 September 2010 - 10:01 AM
Digo, como a mi no me gusta llenarme de componentes adicionales
![:p](http://delphiaccess.com/foros/public/style_emoticons/default/04.gif)
Salud OS
#5
Posted 20 September 2010 - 10:10 AM
La opción de cHackAll tampoco tiene desperdicio y sin utilizar componentes de terceros, incluso te modifica el texto una vez terminado el chequeo del texto.
Digo, como a mi no me gusta llenarme de componentes adicionales
Sí, yo soy del mismo pensamiento que tu, pero hay PCs que no tienen el Office instalado o son "viejos" y se hace muy lento su uso, por eso tiré por la otra opción que, a parte de ser free, no depende de Office
![:)](http://delphiaccess.com/foros/public/style_emoticons/default/27.gif)
Nos leemos
#6
Posted 20 September 2010 - 10:16 AM
La opción de cHackAll tampoco tiene desperdicio y sin utilizar componentes de terceros, incluso te modifica el texto una vez terminado el chequeo del texto.
Digo, como a mi no me gusta llenarme de componentes adicionales![]()
Salud OS
Estoy de acuerdo respecto al uso de componentes..., y más cuando se desarrolla en equipo y no todos tienen idéntica instalación de Delphi.
Probaré la de Chackall y les platico...
#7
Posted 20 September 2010 - 10:19 AM
delphi
uses ComObj, ClipBrd, ShellApi; procedure TForm1.Button1Click(Sender: TObject); var WindowName: string; WindowHandle: Cardinal; WordApp, Document, Selection: OleVariant; begin WordApp := CreateOleObject('Word.Application'); Document := WordApp.Documents.Add; Selection := WordApp.Selection; Selection.TypeText(memo1.Text); // Para que no salga la ventana del Word despues de revisar la gramtica/ortografia WindowName := WordApp.ActiveDocument.FullName + ' - ' + WordApp.Application.Caption; WindowHandle := 0; WindowHandle := FindWindow(nil, pChar(WindowName)); SetWindowRgn(WindowHandle, CreateRectRgn(0,0,0,0), true); // Empezamos revisar la ortografia WordApp.ActiveDocument.CheckGrammar; Selection.WholeStory; Selection.Copy; Edit1.Text := Clipboard.AsText; // Mandamos a cerrar el Word con el programa TSkill ShellExecute(Handle, nil, 'tskill', 'winword', nil, sw_hide); end;
Puedes aplicar ese código aunque según leí que es algo lento pero depende en el tipo de maquina y la capacidad que tenga.(fuente clubdelphi)
De hecho, el código que estoy modificando es precisamente éste..., y no me funciona.
#8
Posted 20 September 2010 - 10:24 AM
Pues ese código yo no lo puedo probar, soy de los que no usan el Office
![:p](http://delphiaccess.com/foros/public/style_emoticons/default/04.gif)
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
Nos leemos
#9
Posted 20 September 2010 - 10:39 AM
De hecho, el código que estoy modificando es precisamente éste..., y no me funciona.
Ya probaste el código que enlazo de cHackAll, ya lo probé y funciona correctamente, de hecho es una modificación en base al código que estás probando.
Salud OS
#10
Posted 20 September 2010 - 10:40 AM
Buenas,
Pues ese código yo no lo puedo probar, soy de los que no usan el Office(viva OO!!!
![]()
![]()
)
Nos leemos
Bueno, si partimos del hecho que el amigo Felipe.mx indica que "debe ser" con el corrector ortográfico de MS-Office, pues le funciona
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
Salud OS
PD, yo también uso OO en mi máquina y MS-Office en el de la oficina.
#11
Posted 20 September 2010 - 10:42 AM
Ya probaste el código que enlazo de cHackAll, ya lo probé y funciona correctamente, de hecho es una modificación en base al código que estás probando.
Salud OS
Precisamente, en ésas ando..., aparentemente, el que tiene el problema soy yo, por que en otra máquina ejecuta perfectamente cualquiera de ambos códigos. ¡¡Rayos!!, hablando de máquinas que no están sincronizadas.
Si deseas dar por resuelto el hilo, yo no me opondré...
#12
Posted 20 September 2010 - 12:42 PM
Éste código:
delphi
uses ComObj, ClipBrd, ShellApi; procedure TForm1.Button1Click(Sender: TObject); var WindowName: string; WindowHandle: Cardinal; WordApp, Document, Selection: OleVariant; begin WordApp := CreateOleObject('Word.Application'); Document := WordApp.Documents.Add; Selection := WordApp.Selection; Selection.TypeText(memo1.Text); // Para que no salga la ventana del Word despues de revisar la gramtica/ortografia WindowName := WordApp.ActiveDocument.FullName + ' - ' + WordApp.Application.Caption; WindowHandle := 0; WindowHandle := FindWindow(nil, pChar(WindowName)); SetWindowRgn(WindowHandle, CreateRectRgn(0,0,0,0), true); // Empezamos revisar la ortografia WordApp.ActiveDocument.CheckGrammar; Selection.WholeStory; Selection.Copy; Edit1.Text := Clipboard.AsText; // Mandamos a cerrar el Word con el programa TSkill ShellExecute(Handle, nil, 'tskill', 'winword', nil, sw_hide); end;
Puedes aplicar ese código aunque según leí que es algo lento pero depende en el tipo de maquina y la capacidad que tenga.(fuente clubdelphi)
Como el del amigo cHackAll, funcionan ÚNICAMENTE con el texto directamente tomado desde el componente de texto que se trate. No permiten, por ejemplo, enviar el contenido de ése componente o campo como un texto o variable, por que NO FUNCIONARÁ. Pequeño detalle que creo que será conveniente hacer saber a la comunidad.
Y ahora sí, doy por resuelto el hilo.
#13
Posted 20 September 2010 - 01:14 PM
También depende mucho de la actualización del diccionario de Word, como es lógico y de esperarse; afortunadamente se conserva la funcionalidad de agregar palabras nuevas al diccionario.
#14
Posted 12 April 2022 - 08:43 AM
Muchas gracias, yo implemente este código para adaptarlo a un proyecto y me funciono de maravilla