Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Организация зап... 64603
Создание потоко... 61594
Модуль Forms 61229
Создание отчето... 61174
ТЕХНОЛОГИИ ДОСТ... 57623
Пример работы с... 55124
Имитационное мо... 53016
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

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

Моделирование вычислительного центра на GPSS + Отчет + Блок схема
Обратное размещение элементов ЭВС на Delphi + Пояснительная записка
Моделирование автовокзала + Отчет + Блок схема

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Разработка табличного документа — бланк счета-фактуры



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

Рис. 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 10:58:40 · 1 Комментариев · 8178 Прочтений · Для печати

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


Комментарии
! November 09 2011 17: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...
Шаблон для новост...

Случайные загрузки
Java 2 - Эффектив...
Apollovcl61
Delphi на примерах
iComm v.6.1 - выв...
Просмотр коммент...
Программирование ...
PRNDbgrid
CoolControls v3.0...
Керниган Б.В., Ри...
3D Октаэдр
AID антивирус
DS_Group
VFW
Самоучитель PHP 5...
FormShape [Исходн...
JanButtonsV
База Allsubmitter...
Х. М. Дейтел, П. ...
Dynamic Titles дл...
C# в кратком изло...

Топ загрузок
Приложение Клие... 100384
Delphi 7 Enterp... 83517
Converter AMR<-... 20051
GPSS World Stud... 11298
Borland C++Buil... 11233
Borland Delphi ... 8175
Turbo Pascal fo... 6987
Visual Studio 2... 4970
Калькулятор [Ис... 4416
FreeSMS v1.3.1 3516
Случайные статьи
Отключение коротки...
Странные эффекты
9.2. Первая помощь...
Степень улучшения ...
Оперативно доступн...
Выбор положения ЖК...
Ленивая реализация
Лицензия Creative ...
Секреты: принцип р...
Зачем нужны виртуа...
Общение в чате
Перспективы свопинга
НЕ ВСЕГДА БАЗА ДАН...
СТАНДАРТНЫЕ ЧИСЛОВ...
Создание файла про...
Функции для выполн...
Программирование: ...
Система Mach - исп...
Интим магазин
16-Ю)
Исходная БДдиспетч...
Нетипизированные ф...
графические типы д...
3.3. Принадлежнос...
Отправить обратные...
Статистика



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


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