![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Спеллер Word'а для нужд программы.
AlexanderMS © (2007-01-03 16:37:00)Как можно заставить вордовский спеллер проверить орфографию в произвольном сочетании слов?
AlexanderMS (2007-01-04 16:16:00) [1]Большое спасибо!
Такой роскоши, как TSpellChecker, мне не нужно (скачал, посмотрел, куча модулей, компоненты всякие).
Вариант [1] устраивает с исключением:
Как понять, что в слове ошибка?!
Попробую так :CheckGrammar(SomeWord);
vlad-mal (2007-01-04 15:00:00) [2]Конечно, лучше. :)
Однако, что чел хотел - то и получил.
DrPass (2007-01-04 01:09:00) [3]Имхо, разумнее скачать с Torry компонентину TSpellChecker, которая пользуется вордовским спеллчекером напрямую, без необходимости запуска Ворда. И вообще без необходимости иметь его на компьютере, ей достаточно лишь самой библиотеки спеллчекера и словарика для нужного языка
vlad-mal (2007-01-03 20:49:00) [4]Например:
бросаем на форму:
wdApp: TWordApplication;
wdDoc: TWordDocument;
С параметрами, например, такими:
object wdApp: TWordApplication
AutoConnect = False
ConnectKind = ckRunningOrNew
AutoQuit = True
end
object wdDoc: TWordDocument
AutoConnect = False
ConnectKind = ckRunningOrNew
end
и реализуем два метода:
procedure DoWord; // Инициализация MS Word
procedure WorkWithWord; // Собственно, работа
Реализация:
procedure TForm1.DoWord;
var
Template, NewTemplate, DocumentType, Visible, ItemIndex: OleVariant;
begin
try // Попытка коннекта
wdApp.Connect;
ItemIndex := 1;
// wdApp.Application.EnableEvents := false; // Ускоряем
Template :=
'C:\Doc.Doc';
NewTemplate := False;
DocumentType := wdTypeDocument;
Visible := False;
wdApp.Documents.Add(Template, NewTemplate, DocumentType, Visible);
wdDoc.ConnectTo(wdApp.Documents.Item(ItemIndex));
except
on E: Exception do begin
ShowMessage('Ошибка активизации приложения Microsoft Word. ' +
E.Message);
if Assigned(wdApp) then
if (wdApp.Documents.Count > 0) then begin
wdApp.AutoQuit := True; // Пусть не зависает фигня в системе!
end;
exit
end;
end;
try
WorkWithWord;
except
on E: Exception do begin
ShowMessage('Ошибка работы с Microsoft Word. ' +
E.Message);
if Assigned(wdApp) then
if (wdApp.Documents.Count > 0) then
wdApp.AutoQuit := True; // Пусть не зависает фигня в системе!
exit
end;
end
end;
Ну и сама работа:
procedure TForm1.WorkWithWord;
var
fsaveChanges : OleVariant;
begin
fsaveChanges := False;
wdDoc.Select;
wdApp.Selection.Select;
wdApp.Selection.Text := 'Здравствуй, Юра, Новый Гоd!';
wdDoc.CheckGrammar;
wdDoc.Close(fsaveChanges);
wdApp.Disconnect;
end;
И все.