Используйте Delphi4.0 для прямого управления Word97.
№: QA003053
Дата создания: 15 июня 2000 г. Дата последнего изменения: 15 июня 2000 г.
Категория:
статья :
Резюме: Друзья, которые играли в PowerBuilder, должны знать, что самой важной технологией в PB является технология DataWindow. Ее очень удобно использовать для проектирования форм, обработки ввода данных и создания отчетов. Однако функция поддержки отчетов Delphi гораздо меньше, чем у PB. Профессиональная версия Delphi включает QuickReport, но представляет собой набор компонентов отчетов, лицензированных QSD AS (норвежской компанией). Конечно, мы также можем использовать внешние инструменты отчетности, такие как ReportSmith или Cristal Report. Однако элементы управления немного сложны, и между ними и Delphi отсутствует интеграция.
Когда мы разрабатывали онлайн-версию «Системы официального документооборота», мы пробовали разные способы печати официальных документов. Наше требование — распечатать обычный официальный документ в формате официального документа, и пользователь может выполнить простой контроль над его версткой. Сяохуэй сначала попробовал использовать QuickReport, но эффект оказался весьма неудовлетворительным, особенно в плане поддержки некоторых китайских форматов. Позже Сяохуэй настолько увлекся этим, что просто написал программу печати вручную, не полагаясь на инструменты проектирования, а жаль. Навыки Сяохуэя были недостаточно хороши, и он не мог продолжать играть, когда писал половину, поэтому ему пришлось искать другой путь. Так случилось, что в тот день пришла копия «Китайских компьютерных новостей» и там была статья о том, как использовать Excel в VB. Сяохуэй подумал: почему бы не использовать Delphi для отправки данных в Word и позволить Word завершить работу по редактированию и набору текста? Проще говоря, он использует технологию автоматизации OLE.
Сяохуэй попробовал, и эффект оказался неплохим. ——Хотя для программиста программу, которую он пишет, нужно подцепить к чужому приложению, чтобы полностью реализовать собственные функции, это все равно, что вставить утку в стаю кур, и в его сердце всегда что-то есть. Однако из-за напряженных задач по разработке директор приходил убеждать его каждые три или четыре раза. Хотя в итоге это выглядело немного невзрачно, Сяохуэй это не волновало. Хорошо, без лишних слов, давайте посмотрим, как Сяохуэй этого добился…
Ссылка: http://www.xiaohui.com
Модератор: Потому что срок действия исходной ссылки истек. Приводим оригинальный текст здесь:
1. Предисловие
Друзья, которые играли в PowerBuilder, должны знать, что самой важной технологией в PB является технология DataWindow. Ее очень удобно использовать для проектирования форм, обработки ввода данных и создания отчетов. Однако функция поддержки отчетов Delphi гораздо меньше, чем у PB. Профессиональная версия Delphi включает QuickReport, но представляет собой набор компонентов отчетов, лицензированных QSD AS (норвежской компанией). Конечно, мы также можем использовать внешние инструменты отчетности, такие как ReportSmith или Cristal Report. Однако элементы управления немного сложны, и между ними и Delphi отсутствует интеграция.
Когда мы разрабатывали онлайн-версию «Системы официального документооборота», мы пробовали разные способы печати официальных документов. Наше требование — распечатать обычный официальный документ в формате официального документа, и пользователь может выполнить простой контроль над его версткой. Сяохуэй сначала попробовал использовать QuickReport, но эффект оказался весьма неудовлетворительным, особенно в плане поддержки некоторых китайских форматов. Позже Сяохуэй настолько увлекся этим, что просто написал программу печати вручную, не полагаясь на инструменты проектирования, а жаль. Навыки Сяохуэя были недостаточно хороши, и он не мог продолжать играть, когда писал половину, поэтому ему пришлось искать другой путь. Так случилось, что в тот день пришла копия «Китайских компьютерных новостей» и там была статья о том, как использовать Excel в VB. Сяохуэй подумал: почему бы не использовать Delphi для отправки данных в Word и позволить Word завершить работу по редактированию и набору текста? Проще говоря, он использует технологию автоматизации OLE.
Сяохуэй попробовал, и эффект оказался неплохим. ——Хотя для программиста программу, которую он пишет, нужно подцепить к чужому приложению, чтобы полностью реализовать собственные функции, это все равно, что вставить утку в стаю кур, и в его сердце всегда что-то есть. Однако из-за напряженных задач по разработке директор приходил убеждать его каждые три или четыре раза. Хотя в итоге это выглядело немного невзрачно, Сяохуэй это не волновало. Хорошо, без лишних слов, давайте посмотрим, как Сяохуэй этого добился…
2. Дизайн формы
Если говорить прямо, то на самом деле это очень просто. Сяохуэй сделал здесь простой пример программы:
1. Установите для Font.name формы Form1 значение «Songti», а для Font.size — значение 12;
2. Поместите в форму последовательно пять элементов управления tLable, label1-labe5. Их свойства заголовка — «номер документа», «заголовок», «принимающий блок», «текст» и «отправляющий блок».
3. Поместите в форму последовательно пять элементов управления редактирования: tEdit, tEdit, tEdit, tMemo и tEdit. Их атрибуты имен: ED_WenHao, ED_BiaoTi, ED_ShouWenDanWei, ED_ZhenWen и ED_FaWenDanWei соответственно.
4. Поместите в форму последовательно два элемента управления tButton. Их атрибуты имен — Btn_PRintToWord и btn_Quit, а атрибуты Caption — «Печать» и «Выход» соответственно.
Формат оформления формы указан на рисунке, прикрепленном в конце этой статьи.
3. Дизайн кода
Программный сегмент выглядит следующим образом:
блок Unit1;
интерфейс
использует
Windows, сообщения, SysUtils, классы, графика, элементы управления, формы, диалоги,
StdCtrls, OleCtnrs, ComObj;
тип
ТФорм1 = класс (ТФорма)
Метка1: TLabel;
Метка2: TLabel;
Метка3: TLabel;
Метка4: TLabel;
Метка5: TLabel;
ED_ВэньХао: TEdit;
ED_BiaoTi: TEdit;
ED_ShouWenDanWei: TEdit;
ED_ZhenWen: TMemo;
ED_FaWenDanWei: TEdit;
Btn_PrintToWord: TButton;
Btn_Quit: TButton;
процедура Btn_PrintToWordClick (Отправитель: TObject);
процедура Btn_QuitClick (Отправитель: TObject);
частный
{Частные заявления}
общественный
{Публичные заявления}
конец;
вар
Форма1: ТФорм1;
выполнение
{$R *.DFM}
//Старт: данные отправляются в событие слова
процедура TForm1.Btn_PrintToWordClick(Отправитель: TObject);
вАР
VarWord: Variant;// используется при создании WORD
начинать
пытаться
// 1. Создаём OleObject и подключаем word97
VarWord:=CreateOleObject('word.basic');
// 2. Создаём новый файл для Word97
ВарВорд.ФайлНовый;
// 3. Устанавливаем базовый статус Word97
VarWord.ViewZoom75 //Установим соотношение сторон 75%;
VarWord.ViewPage; //Переходим в режим отображения страницы
// 4. Отправляем информацию о текущем элементе управления данными в Word97
// 4.1 Отправка данных о номере документа
VarWord.CenterPara //По центру;
Varword.font('宋体'); //Установим шрифт
VarWord.FontSize(14); //Установим размер шрифта
varword.insert(#13+#13+ ED_WenHao.Text+#13+#13+#13);
// 4.2 Отправка данных заголовка
VarWord.font('ХейБи');
VarWord.Fontsize(16);
VarWord.insert(ED_BiaoTi.text+#13);
// 4.3 Отправка данных принимающего устройства
VarWord.LeftPara //выровнено по левому краю;
VarWord.Font('宋体');
VarWord.fontSize(14);
VarWord.Insert(#13+ ED_ShouWenDanWei.Text+':'+#13);
// 4.5 Отправка текстовых данных
VarWord.fontSize(14);
VarWord.Insert(ED_ZhenWen.Text+#13);
// 4.6 Отправка данных отправляющего устройства
VarWord.RightPara //выравнивание по правому краю;
VarWord.fontSize(14);
VarWord.Insert(ED_FaWenDanWei.Text+#13);
// 5 финальных настроек
VarWord.StartOfdocument //Перейти в начало документа;
VarWord.AppMaxiMize //Установить максимальное окно
VarWord.AppShow; //Показать приложение;
кроме
showmessage('Не удалось запустить Microsoft Word!');
конец; //конец попытки
конец;
//конец: данные отправлены в событие word
//Начало: событие закрытия окна
процедура TForm1.Btn_QuitClick(Отправитель: TObject);
начинать
закрывать;
конец;
//Конец: событие закрытия окна
конец.
// Это конец основной программы
4. Примечания
1. Описание
1. Поскольку это всего лишь демонстрационный пример, он не подключен к фоновой базе данных. В реальной работе соответствующие элементы управления tEdit и tMemo могут быть заменены элементами управления tDBEdit и tDBMOmo, а для подключения можно добавить tTable, tDataSource и другие элементы управления. в базу данных.
2. В этом руководстве не рассматривается пакетная печать.
3. Программа работает под Pwin97, Delphi 4.0 Professional Edition и китайским Word97.
4. Поскольку существуют разные версии Word, Microsoft преобразовала некоторые интерфейсы автоматизации OLE в каждый иностранный язык. Если вы используете другие версии Word, эта программа может работать некорректно.
5. Вы можете получить соответствующие команды драйвера с помощью макрокоманд, приведенных в справке word97, или вы можете щелкнуть меню [Инструменты] в Word97 - нажать [Настроить] - нажать кнопку [Клавиатура], чтобы просмотреть команды Word, отображаемые в категориях; Слово97.
2. Преимущества и недостатки
1. Благодаря технологии автоматизации OLE работа по верстке и печати официальных документов передается в Word, что делает управление более удобным для конечного пользователя.
2. В Word97, если данные изменены, их нельзя отправить обратно в основную программу, которая их вызвала и отразила в базе данных. Вот в чем неудобство.
3. Этот пример представляет собой просто приложение для особых обстоятельств. Если вы хотите распечатать большое количество меток данных и составить таблицы, Сяохуэй считает, что более гибко использовать отчеты.
Источник статьи: Путь Сяохуэя как программиста .