Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Wordbasic с параметрами из Delphi

Имевшая место дискуссия двух начинающих программистов-школьников. Повод - спор, кто больше операторов Бейсика назовет. Перебрали почти все им известные, долго думают. Первый (радостно): LINE!
Второй (спокойно): LINE INPUT!
Первый (с досадой): ГНИДА!
Второй (спокойно): ГНИДА INPUT!

Привожу некоторый Delphi код для работы с Word 95. Я протестировал его под Word 97 и, как оказалось, потребовалось внести некоторые исправления - он не захотел работать под ним, но что самое неприятное - после исправлений ошибок выяснилось, что Word 97 работает значительно медленнее, чем Word 95. SendKeys был применен от отчаяния.


 function TAutoMerge.ProcessMerge(FSource, FData, FOutput: string):
   boolean;
 var
   MSWord: Variant;
   i, NumDocs: integer;
   Found: boolean;
   s, LastOLECommand: string;
 begin
   ProcessMerge := False;
   try
     LastOLECommand := 'Creating OLE Object.';
     MSWord := CreateOLEObject('Word.Basic');
     LastOLECommand := 'Show MS Word.';
     MSWord.AppShow;
     Application.ProcessMessages;
 
     LastOLECommand := 'Open document file >' + FSource + '<.';
     MSWord.FileOpen(Name := FSource, ConfirmConversions := 0,
       ReadOnly := 1, AddToMru := 0, PasswordDoc := '',
       PasswordDot := '', Revert := 0,
       WritePasswordDoc := '',
       WritePasswordDot := '');
     LastOLECommand := 'Screen updating = false.';
     MSWord.ToolsOptionsSpelling(AutomaticSpellChecking := 0);
     LastOLECommand := 'Set background printing to off.';
     MSWord.ToolsOptionsPrint(Background := 0);
 
     Application.ProcessMessages;
     LastOLECommand := 'Open Data file >' + FData + '<.';
     MSWord.MailMergeOpenDataSource(Name := FData, ConfirmConversions := 0,
       ReadOnly := 1, LinkToSource := 1,
       AddToMru := 0,
       PasswordDoc := '', PasswordDot := '',
       WritePasswordDoc := '', WritePasswordDot := '',
       Connection := '', SQLStatement := '',
       SQLStatement1 := '',
       Revert := 1);
 
     LastOLECommand := 'Start the Mail Merge.';
     MSWord.MailMerge(CheckErrors := 2, Destination := 1,
       MergeRecords := 0,
       From := '', to := '', Suppression := 0,
       MailSubject := '',
       MailAsAttachment := 0, MailAddress := '');
 
     LastOLECommand := 'Set up for SendKeys to select printer.';
     Application.ProcessMessages;
     MSWord.AppShow;
     s := '{home}%l{enter}{home}%n' + FOutput + '{tab}{enter}{home}{enter}';
     // sdd 1.1
     MSWord.SendKeys(s, -1);
     MSWord.MailMergeToPrinter;
     Application.ProcessMessages;
 
     ProcessMerge := True;
     LastOLECommand := 'All done with merge.';
   except
     on EOleException do
     begin
       inc(TotalOLEErrors);
       lblStatus.caption := LastOLECommand;
       if (TotalOLEErrors >= TOTALOLEERRORS_MAX) then
       begin
         s := 'Имеется по крайней мере одна ошибка OLE (' +
           IntToStr(TotalOLEErrors) +
 
         '), последней ошибкой было >' + LastOLECommand + '<.';
         ShowMessage(s);
       end;
     end
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS