Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2008, 22:57   #1
terminadoor
Пользователь
 
Регистрация: 26.06.2008
Сообщений: 86
Радость MS Word из программ

Возможно ли создать документ MS Word? Мне нужно, чтоб программа могла текст вставлять в документ, и некоторие поля TEdit вировнять по середине. Если можна, покажите пример.
TerMinAdoOR
terminadoor вне форума Ответить с цитированием
Старый 09.07.2008, 23:25   #2
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Далее для работы с Word-ом нам потребуется библиотека типов Word-а, это делается так:

Project, Import Type Library, Add, далее переходим в папку, где стоит Word ( у меня это - "c:\program files\microsoft office) , заходим в папку Office и выбираем файл - msword8.olb (цифра -? версии Word-а - у Вас может отличаться ) или excel8.olb (для Excel).Нажимаем Оk. Delphi создаст 2 файла - Word_tlb.pas и Office_tlb.pas, их надо включить в раздел uses модуля Main нашего проекта:
Code:
uses ... ,Office_Tlb, word_tlb;
в). Теперь займемся непосредственно программированием.

В разделе var опишем следующие переменные:

Code:

// класс приложения ворда

WordApp:Word_tlb.Application_;

// класс чего-то типа выделения,

// т.е. говоришь - выделить ячейку с ... по, а результат скидываешь

// в эту перем и работаешь с этими ячейками как с 1 объектом
ARange,TempRange:Range;
// массив документов
Docsocuments;
// 1 документ
Dococument;
// массив параграфов
pars:Paragraphs;
// 1 параграф
par:Paragraph;
// параметры для передачи
Template,temp,OpenAsTemplatelevar iant;
// массив таблиц
tabls:Tables;
tabl:Table;
// рабочая переменная
i:integer;
Далее проектируем форму:
1. Поместим вверх нашей формы кнопку - button1 типа tbutton, поменяем заголовок (св-во Caption) на 'Старт'.

2. Под кнопкой разместим панель - panel1 типа tpanel. Внутри панели поместим компонент - bevel1 типа tbevel, поменяем св-во Align на alClient (при этом рамка растянется на всю панель).

3. Сверху панели (далее все компоненты будут размещаться внутри этой панели) разместим метку - label1 типа tlabel, поменяем значение св-ва Caption на 'Передать в ячейку':

4. Ниже слева поместим метку - label1 типа tlabel, св-во Caption поменяем на 'X='

5. Правее метки помещаем компонент Edit1 типа tEdit, св-во Text меняем на '1'

6. По правой границе Edit1 помещаем компонент UpDown1 типа tUpDown, в списке св-ва 'Associate' выбираем Edit1, св-во 'Position' приравниваем '1'

7. Чуть отступаем вправо и повторяем шаги 4-6 , заменив Edit1 на Edit2, UpDown1 на UpDown2, Label1 на Label2 соответственно.

8. Ниже размещаем еще одну метку - label4 типа tlabel, меняем св-во 'Caption' на 'Новое значение ячейки:'

9. Ниже размещаем компонент Edit3 типа tEdit, св-во Text меняем на '0'

10. И, наконец, в самом низу панели размещаем кнопку BitBtn1 типа tBitBtn, меняем св-во 'Kind' на 'bkOk'.

Теперь напашем обработчики - именно в них и заключается вся функциональность программы:



1. Назначим обработчик OnClick компоненту Button1 :

Code:

procedure TForm1.Button1Click(Sender: TObject);

begin

// если заголовок 'Выход', то закрываем программу

if button1.caption='Выход' then

begin

Application.Terminate;

exit

end

// иначе (при первом начатии, когда у нас заголовок 'Старт')

//переименовываем заголовок в 'Выход'

else button1.caption:='Выход';
panel1.Visible:=true;

// создаем экземпляр ворда

WordApp:=CoApplication_.Create;

// делаем его видимым

WordApp.Visible:=true;

// шаблон

template:='Normal';

// создать шаблон

OpenAsTemplate:=false;

// что-то типа оператора with, можно было и напрямую обратиться

Docs:=WordApp.Documents;

// добавляем документ

Doc:=Docs.Add(template,OpenAsTempla te);



// выделить все

ARange:=Doc.Range(EmptyParam,EmptyP aram);

// массив параграфов

pars:=doc.Paragraphs;

// переменная - параметр

template:=arange;

// новый параграф

par:=pars.Add(template);

// цвет зеленный

par.Range.Font.ColorIndex:=11;

// вставляем текст

par.Range.InsertBefore('Привет !!!');

// переменная - параметр

template:=par.Range;

// новый параграф, чтобы таблица не потерла текст

par:=pars.Add(template);

// цвет черный

par.Range.Font.ColorIndex:=0;

// вставляем текст

par.Range.InsertBefore('Переключивш ись в программу, можно программно менять текст ячеек !');

// переменная - параметр

template:=par.Range;

// новый параграф, чтобы таблица не потерла текст

par:=pars.Add(template);

// выделяем параграф

arange:=par.Range;



// шрифт - жирный

ARange.Font.Bold:=1;

// шрифт - рукописный

ARange.Font.Italic:=1;

// получить массив таблиц

tabls:=aRange.Tables;

// добавляем новую таблицу размером 5 на 5

tabl:=tabls.Add(arange,5,5);

// в цикле

for i:=1 to 5 do

// задаем значение ячеек

tabl.Cell(i,1).Range.Text:=inttostr (i);
end;
2. Зададим обработчик формы:

Code:

procedure TForm1.FormDestroy(Sender: TObject);
var
SaveChangeslevariant;
begin
if not VarIsEmpty(WordApp) then begin

SaveChanges:=false;

Doc.Close(SaveChanges,EmptyParam,Em ptyParam);
WordApp.Quit(SaveChanges,EmptyParam ,EmptyParam)

end;

end;

3. Назначим обработчик OnClick компоненту Bitbtn1 :

Code:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin
tabl.Cell(UpDown2.Position,UpDown1. Position).Range.Text:=Edit3.Text;

end;

(c) 13 SoftWare. Статья взята с сайта www.vladimir13.narod.ru

http://www.drkb.ru

PS В drkb много хороших примеров
Роман Радер вне форума Ответить с цитированием
Старый 10.07.2008, 01:20   #3
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

http://www.delphikingdom.com/asp/ite...ode=1&itemid=3
Мне сильно помогло, когда я с Вордом учился работать
Romanbl4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переносимость программ Мэс Общие вопросы Delphi 29 15.06.2009 09:56
Красота программ Gromsky Помощь студентам 4 06.03.2008 14:55
Написание программ AFenics Фриланс 2 18.08.2007 00:30
Загрузка программ из др. программ в АСМе Shacal Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 05.02.2007 08:53