![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.06.2008
Сообщений: 86
|
![]()
Возможно ли создать документ MS Word? Мне нужно, чтоб программа могла текст вставлять в документ, и некоторие поля TEdit вировнять по середине. Если можна, покажите пример.
TerMinAdoOR
|
![]() |
![]() |
![]() |
#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; // массив документов Docs ![]() // 1 документ Doc ![]() // массив параграфов pars:Paragraphs; // 1 параграф par:Paragraph; // параметры для передачи Template,temp,OpenAsTemplate ![]() // массив таблиц 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 SaveChanges ![]() 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 много хороших примеров |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 144
|
![]()
http://www.delphikingdom.com/asp/ite...ode=1&itemid=3
Мне сильно помогло, когда я с Вордом учился работать |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переносимость программ | Мэс | Общие вопросы 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 |