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
| unit UCorrecteur;
interface
Uses ComCtrls;
Procedure Verifie(Texte: TRichEdit);
implementation
Uses Classes,Forms,Variants,SysUtils,Dialogs,Word_TLB,OleServer;
Const
MonDico = 'MonDicoPerso.dic';
procedure Verifie(Texte: TRichEdit);
Var Word : TWordApplication;
Doc : _Document;
SaveChanges : OleVariant;
Dicos : Dictionaries;
ListeDico : TStrings;
NomDico : String;
Trouve : Boolean;
i : Integer;
Index : OleVariant;
begin
// Création d'un objet WordApplication
Word := TWordApplication.Create(Application);
// Création des listes de travail intermédiaires
ListeDico := TStringList.Create;
Try
// Ouverture de word et création d'un document vide
Word.ConnectKind := ckNewInstance;
Word.Connect;
Doc:=Word.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
// Test d'existance du dico perso de l'éditeur
// Chargement/création suivant le cas
NomDico := ExtractFilePath(ParamStr(0))+MonDico;
If Not FileExists(NomDico)
Then ListeDico.SaveToFile(NomDico);
// Ajout du dico perso pour l'éditeur
Dicos := Word.CustomDictionaries;
Trouve:=False;
For i:= 1 To Dicos.Count Do
Begin
Index:= i;
If UpperCase(Dicos.Item(Index).Name)=UpperCase(MonDico) Then Trouve:=True;
End;
If Not Trouve Then
Dicos.Add(NomDico);
// Sélection de la langue de correction
// Doc.Content.LanguageID := wdEnglishUS;
Doc.Content.LanguageID := wdFrench;
// copie du texte dans Word
Doc.Content.Text := Texte.Text;
// Appel de la fenêtre de correction de Word, le texte modifié est contenu dans
// l'objet _Document, on n'a pas de contrôle sur ce qui se passe.
// On récupère le texte modifié par Word sauf si la correction est annulée
If Word.Dialogs.Item(wdDialogToolsSpellingAndGrammar).Show(EmptyParam)<>0
Then Texte.Text := Doc.Content.Text;
Finally
// Destruction des listes de travail
ListeDico.Free;
// Fermeture de Word sans sauvegarde
SaveChanges := wdDoNotSaveChanges;
Word.Quit(SaveChanges);
Word.Free;
End;
ShowMessage('Vérification terminée.');
end;
end. |
Partager