Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 9
На сайте нет зарегистрированных пользователей

Пользователей: 13,371
новичок: gacibe6
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование работы класса персональных компьютеров на GPSS + Отчет + Б...
Моделирование процесса обработки заданий на вычислительном центре на GP...
Диплом RSA, ЭЦП, сертификаты, шифрование на C#

Разработка табличного документа — бланк счета-фактуры



Печатная форма счета-фактуры состоит из трех частей. Первая часть пред-
ставляет собой заголовок формы, количество записей и размеры которой
постоянны. Вторая часть представляет собой таблицу, состоящую из заго-

Рис. 7.13. Устанавливаем направление шрифта для текста ячейки

ловка, табличной части и оконечной части, которая содержит итоговые
суммы. Третья часть формы счета-фактуры представляет собой записи, ко-
личество которых является константой, а расположение определяется раз-
мерами табличной части документа.
Для формирования документа будем использовать его шаблон, который
создадим и сохраним в формате шаблона документа Word. Данный шаблон,
как и шаблон простого (без таблиц) документа, должен содержать постоян-
ный текст, который не будет меняться при формировании новых докумен-
тов, и текстовые константы, служащие для подстановки реального текста
при формировании документа. Кроме этого в шаблоне счета-фактуры
должна присутствовать табличная часть, ячейки которой содержат как по-
стоянные записи, так и текстовые константы для заполнения из программы.
Дополнительно табличная часть должна иметь строки, по подобию которых
будут добавляться новые строки в таблицу.
Внешний вид возможного шаблона документа бланка счета-фактуры пред-
ставлен на рис. 7.14.
Для формирования выходного документа будем использовать методы поиска
фрагмента текста в документе, поиска и замены фрагмента текста на задан-

Рис. 7.14. Шаблон документа бланка счета-фактуры

ный текст. Для работы с табличной частью документа нам придется исполь-
зовать свойства и методы для обеспечения перехода к заданной ячейке,
определения текущей таблицы и положения в ней ячейки, записи текста в
ячейку. Рассмотрим фрагменты исходного текста:
Формирование табличного документа с использованием шаблона документа
// Функция FindAndlnsert находит текстовую константу и подставляет
// на ее место текст
function FindAndlnsert(FindText,ReplacementText:string):boolean;
const wdReplaceAll=2;
begin
Form!.W.Selection.Find.Text:=FindText;
Forml.W.Selection.Find.Replacement.Text:=ReplacementText;
FindAndlnsert:=Forml.W.Selection.Find.Execute(Replace:=wdReplaceAll);
end;
// Функция FindRowColumnlnTable находит текстовую константу и возвращает
// таблицу, а также номер строки и столбца, где находится эта константа
Function FindRowColumnlnTable(FindText:string;var tab:variant; var
Row,Column:integer):boolean;
begin
FindRowColumnlnTable:=false;
try
Forml.W.Selection.Find.Text:=FindText;
if Forml.W.Selection.Find.Execute then begin
Column:=Forml.W.Selection.Cells.Item(l).Columnlndex;
Row:=Forml.W.Selection.Cells.Item(l).Rowlndex;
tab:=Forml.W.Selection.Tables.Item(1);
FindRowColumnlnTable:=true;
end;
except
FindRowColumnlnTable:=false;
end;
end;
// Данная процедура формирует документ счет-фактуру
procedure TForml.ButtonllCllck(Sender: TObject);
var table_:variant;
Row_,Column_:integer;
begin
// Создаем новый документ по шаблону
W.documents.Add(ExtractFileDir(Application.ExeName)+
'\Шаблон счета-фактуры.dot');
// Подставляем текст в заголовок документа
FindAndlnsert('###НОМЕР&',Ч');
FindAndlnsert(•###Дата&',datetostr(date));
FindAndlnsert('###ПРОДАВЕЦ&','ЗАО Сокол');
FindAndlnsert('###АДРЕС_ПРОДАВЦА&',
'г. Санкт-Петербург, ул. Кузнечная 5');
FindAndlnsert('###ИНН_ПРОДАВЦА&', 4234567890') ;
FindAndlnsert('###ГРУ300ТПРАВИТЕЛЬ&','ЗАО Сокол');
FindAndlnsert('###ГРУ30П0ЛУЧАТЕЛЬ&','ЗАО Селена');
FindAndlnsert('###ДОКУМЕНТ&','1');
FindAndlnsert('###ДАТА_ДОКУМЕНТА&',datetostr(date));
FindAndlnsert('###ПОКУПАТЕЛЬ&','ЗАО Селена');
FindAndlnsert('###АДРЕС_ПОКУПАТЕЛЯ&','г. Москва, ул. Комаровского 41');
FindAndlnsert('###ИНН_ПОКУПАТЕЛЯ&','0987654321');
// Если нашли текстовую константу, то переходим к формированию табличной
// части.
if FindRowColumnlnTable('###ТАЕЛИЦА&',table_,Row_,Column_)then begin
// Перед началом формирования курсор находится в таблице table_
// в ячейке Cell(Row_,Column_). Добавляем в таблицу необходимое
// количество строк, уменьшенное на 1 (поскольку одна строка
/ / в шаблоне уже есть).
W.Selection.InsertRows(2-1);
// Формируем первую строку табличной части документа.
table_.Cell(Row_,Column_+0).Range.Text:='KOVRIC TRIVEL RUG';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text:='l';
table_.Cell(Row_,Column_+3).Range.Text:='342,00';
table_.Cell(Row_,Column_+4).Range.Text: = '342, 00' ;
table_.Cell(Row_,Column_+ 6).Range.Text: =' 2 0, 0 0 ';
table_. Cell (Row_, Coluntn_+7) .Range.Text: =' 68, 40 ' ;
table .Cell(Row_,Column +8).Range.Text:='41O,40';
// Формируем вторую строку табличной части документа.
Inc(Row_);
table_.Cell(Row_,Column_+0).Range.Text:=
'НИТЬ Climax Braided 100m 0,16mm';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text: ='2' ;
table_.Cell(Row_,Column_+3).Range.Text: = '3O9, 08' ;
table_.Cell(Row_,Column_+4).Range.Text: ='618,16' ;
table_.Cell(Row_,Column_+6).Range.Text:='2O,00';
table_.Cell(Row_,Column_+7).Range.Text:='123,63';
table_.Cell(Row_,Column_+8).Range.Text: = '741, 79' ;
// Формируем подпись табличной части документа.
if FindRowColumnInTable('###MTOr&',table_,Row_,Column_)then begin
table_.Cell(Row_,Column_+0).Range.Text:='960,16';
table_.Cell(Row_,Column_+1).Range.Text: ='192, 03';
table_.Cell(Row_,Column_+2).Range.Text:='1152,19';
end;
end; // Заполняем текст в окончании документа.
FindAndlnsert('###ВСЕГО_К_ОПЛАТЕ&',
'Одна тысяча сто пятьдесят два рубля 19 копеек');
end;




Результат выполнения процедуры представлен на рис. 7.15.
Если доработать представленный фрагмент программы так, чтобы вносить
данные из таблицы базы данных, то разработчики Delphi смогут с успехом
использовать его в своих проектах не только для формирования счетов-
фактур.

РИС. 7.15. Сформированный бланк счета-фактуры
Как известно, документы Word наряду с текстом и таблицами могут содер-
жать рисунки, надписи, линии, геометрические фигуры и другие графиче-
ские объекты. Возможно, вы захотите украсить документ логотипом своей
фирмы. О том, как использовать эти возможности Word в программах
Delphi, читайте в следующей главе. Там же вы найдете информацию о том,
как подготовить документ для печати и выполнить печать.
Опубликовал Kest September 23 2009 06:58:40 · 1 Комментариев · 10521 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
! November 09 2011 13:31:18
Пасиба народ!smiley
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Библия для програ...
Программирование ...
PHP: Полезные приемы
SUIPack
PolyFlow
FilesInfo
Род Стивенс. Delp...
Самоучитель PHP 5...
Email
Delphi World 6.0
Программирование ...
SMExport
DAlarm
VFW
DirHTMLReportBuil...
Delphi 2005 для .NET
RxLIB
Стелтинг Стивен, ...
TmxOutlookBarPro
ActiveX в Delphi

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97836
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14192
Borland Delphi ... 10291
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Прогиб мембраны
Рабочие зеркала Аз...
функции AddDetails
Цели, стоящие пере...
Разработка сайтов
Переход в графичес...
Мой компьютер
Одинцово ремонт хо...
Какие маршруты соз...
• Проникновение ви...
Character expressi...
Будущее хавбека Ми...
Модуль RIM и его д...
Введение в язык XSLT
Создание изображен...
Деление неупакован...
ByteSub
HTPC под Windows
Применение вспышки...
ОБЯЗАТЕЛЬНЫЕ ИДЕНТ...
Циклический сдвиг...
Занятие 4. Проекти...
Fruit Cocktail
ПРЕДИСЛОВИЕ К ПЕРВ...
get0(X)
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?