BpcMSSpellCheck

From RiskWiki

Jump to: navigation, search

Late Binding MS Word Based Spell Checker for Normal and Rich Text

Language: Delphi 7 - 2007


// =============================================================================
// MS Word COM Interface to Spell Check and Synonyms
// Original Version: Mike Heydon Dec 2000
// mheydon@eoh.co.za
// Updated and Expanded: JGBishop 2005,2007,2008
// =============================================================================

uses
  Windows,
  SysUtils,
  Classes,
  ComObj,
  Dialogs,
  Forms,
  StdCtrls,
  Controls,
  Buttons,
  Graphics,
  ComCtrls;

type
  // Event definitions
  TbpcMSSpellCheckBeforeCorrection = procedure(Sender : TObject;
                                          MispeltWord : string;
                                          Suggestions : TStrings) of object;

  TbpcMSSpellCheckAboutToChange    = procedure(Sender : TObject;
                                          FocusControl : TObject;
                                          MispeltWord : string; CorrectedWord : string;
                                          var AllowChange : boolean; Var CancelChanges : boolean) of object;

  TbpcMSSpellCheckAfterCorrection  = procedure(Sender : TObject;
                                          MispeltWord : string;
                                          CorrectedWord : string) of object;

  TbpcMSSpellCheckOnCorrection     = procedure(Sender : TObject;
                                          var WordToCorrect : string) of object;

  TbpcMSSpellCheckOnHideSelection  = procedure(sender : TObject; editcontrol : TObject; OnOrOff : boolean) of object;
  TbpcMSSpellCheckOnReadHideSelection  = procedure(sender : TObject; editcontrol : TObject; var OnOrOff : boolean) of object;
  TbpcMSSpellCheckOnReadText  = procedure(sender : TObject; editcontrol : TObject; var StrBuf : string) of object;

  // Property types
  TbpcMSSpellCheckReplacement = (repDefault,repUser);
  TbpcMSSpellCheckLetters = set of char;

  TbpcMSSpellCheckLanguage = (wdLanguageNone,wdNoProofing,wdDanish,wdGerman,
                         wdSwissGerman,wdEnglishAUS,wdEnglishUK,wdEnglishUS,
                         wdEnglishCanadian,wdEnglishNewZealand,
                         wdEnglishSouthAfrica,wdSpanish,wdFrench,
                         wdFrenchCanadian,wdItalian,wdDutch,wdNorwegianBokmol,
                         wdNorwegianNynorsk,wdBrazilianPortuguese,
                         wdPortuguese,wdFinnish,wdSwedish,wdCatalan,wdGreek,
                         wdTurkish,wdRussian,wdCzech,wdHungarian,wdPolish,
                         wdSlovenian,wdBasque,wdMalaysian,wdJapanese,wdKorean,
                         wdSimplifiedChinese,wdTraditionalChinese,
                         wdSwissFrench,wdSesotho,wdTsonga,wdTswana,wdVenda,
                         wdXhosa,wdZulu,wdAfrikaans,wdArabic,wdHebrew,
                         wdSlovak,wdFarsi,wdRomanian,wdCroatian,wdUkrainian,
                         wdByelorussian,wdEstonian,wdLatvian,wdMacedonian,
                         wdSerbianLatin,wdSerbianCyrillic,wdIcelandic,
                         wdBelgianFrench,wdBelgianDutch,wdBulgarian,
                         wdMexicanSpanish,wdSpanishModernSort,wdSwissItalian);


  // Main TbpcMSSpellCheck Class
  TbpcMSSpellCheck = class(TComponent)
  private
    FLetterChars : TbpcMSSpellCheckLetters;
    FFont : TFont;
    FColor : TColor;
    FReplaceDialog : TbpcMSSpellCheckReplacement;
    FCompletedMessage,
    FActive : boolean;
    FLanguage : TbpcMSSpellCheckLanguage;
    FForm : TForm;
    FEbox : TEdit;
    FLbox : TListBox;
    FCancelBtn,
    FChangeBtn : TBitBtn;
    FBeforeCorrection : TbpcMSSpellCheckBeforeCorrection;
    FAfterCorrection : TbpcMSSpellCheckAfterCorrection;
    FOnCorrection : TbpcMSSpellCheckOnCorrection;
    FOnHideSelection : TbpcMSSpellCheckOnHideSelection;
    FOnReadHideSelection : TbpcMSSpellCheckOnReadHideSelection;
    FOnReadTextBuf : TbpcMSSpellCheckOnReadText;
    FAboutToChange : TbpcMSSpellCheckAboutToChange;
    FRPCErrorCount : integer;
    FUseExistingInstance : boolean;
    procedure SetFFont(NewValue : TFont);
  protected
    procedure MakeForm;
    procedure CloseForm;
    procedure SuggestedClick(Sender : TObject);
  public
    MsWordApp,
    MsSuggestions : OleVariant;

    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
    function GetSynonyms(StrWord : string; Synonyms : TStrings) : boolean;
    function CheckWordSpelling(StrWord : string;
                           Suggestions : TStrings) : boolean;
    procedure CheckTextSpelling(var StrText : string);
    procedure CheckRichTextSpelling(RichEdit : TCustomRichEdit; bLineAdjust : boolean=False);
    procedure CheckMemoTextSpelling(Memo : TCustomMemo);
    procedure CheckEditTextSpelling(Memo : TCustomEdit);
    Function Connect : Boolean;
    Function DisConnect : Boolean;
    property Active : boolean read FActive;
    property LetterChars : TbpcMSSpellCheckletters read FLetterChars write FLetterChars;
  published
    property Language : TbpcMSSpellCheckLanguage read FLanguage
                                            write FLanguage;
    property CompletedMessage : boolean read FCompletedMessage
                                        write FCompletedMessage;
    property Color : TColor read FColor write FColor;
    property Font : TFont read FFont write SetFFont;
    property BeforeCorrection : TbpcMSSpellCheckBeforeCorrection
                                read FBeforeCorrection
                                write FBeforeCorrection;
    property AboutToChange :  TbpcMSSpellCheckAboutToChange
                                read FAboutToChange
                                write FAboutToChange;
    property AfterCorrection : TbpcMSSpellCheckAfterCorrection
                               read FAfterCorrection
                               write FAfterCorrection;
    property OnCorrection : TbpcMSSpellCheckOnCorrection
                            read FOnCorrection
                            write FOnCorrection;
    property OnHideSelection : TbpcMSSpellCheckOnHideSelection
                            read FOnHideSelection
                            write FOnHideSelection;
    property OnReadHideSelection : TbpcMSSpellCheckOnReadHideSelection
                            read FOnReadHideSelection
                            write FOnReadHideSelection;
    property OnReadTextBuf : TbpcMSSpellCheckOnReadText
                            read FOnReadTextBuf
                            write FOnReadTextBuf;
    property ReplaceDialog : TbpcMSSpellCheckReplacement
                             read FReplaceDialog
                             write FReplaceDialog;
    property UseExistingInstance : boolean read FUseExistingInstance
                                        write FUseExistingInstance;
  end;

BackLinks



CopyRight Bishop Phillips Consulting Pty Ltd 1997-2012 ( BpcMSSpellCheck )
Personal tools