img
00:00
imgDRKB online - Документация на основе RTF-шаблона
imgimgimg
  Общие вопросы
  Delphi IDE, компиллятор, отладчик, редактор
  Язык программирования Дельфи
  VCL
  Системные функции и WinAPI
  Базы данных
  Работа с файловой системой
  Репортинг, работа с принтером
  Работа с сетью, интернетом, протоколами
  Работа с графикой и мультимедиа
  Математика, алгоритмы
  Форматы файлов, данных. Конвертация форматов
  ANSI ---> ASCII
  BMP ---> AVI (для TAnimate)
  BMP ---> EMF
  BMP ---> DIB
  BMP ---> ICO
  BMP ---> JPG
  BMP --> EMF (Enhanced Metafile)
  BMP ---> RTF
  BMP ---> WMF
  CUR ---> BMP
  ICO ---> BMP
  JPG ---> BMP
  TIF ---> PDF
  TXT ---> GIF
  DOC ---> HTML
  WMF ---> BMP
  RTF-->HTML
  HTML --> RTF
  DFM -->TXT, TXT --> DFM
  Win1251 <-> Koi8r
  Как инсталлировать INF файл?
  Как конвертировать WideString в String?
  Как определить графический формат файла (не используя расширение)?
  Как прочитать MP3 ID3-Tag?
  Как прочитать заголовок wav файла?
  Информация о AVI файле (разбор заголовка AVI)
  Как работать с DWG файлами (AutoCAD)?
  Как работать с GIF файлами?
  Как работать с PDF файлами?
  Как разрезать wav файл?
  Как узнать размер картинки для JPG, GIF и PNG файлов?
  Компонент для работы с PCX файлами
  Пример работы чтения и сохранении wav-файлов
  Работа с TGA файлами
  Формат wave файла
  Декомпилляция звукового файла формата Wave и получение звуковых данных
  Flash SWF --> EXE
  Преобразование иконок в Gliph-ы
  Документация на основе RTF-шаблона
  "Дедушка RTF" еще послужит
  ActiveX, COM, DCOM, MIDAS, CORBA, интерфейсы, OLE, DDE
  Разработка приложений
  Kylix
  Delphi.Net
  Развлечения
  
  [drkb=4010] Комментариев: 0 
Документация на основе RTF-шаблона
Документация на основе RTF-шаблона
Разработка прикладного ПО - это, как известно, не только написание кода программ, но и проектирование печатных документов и отчетов. Практически все интегрированные среды имеют в своем составе генераторы отчетов, в той или иной степени помогающие решить эту задачу. Однако, несмотря на явные достоинства, использование генераторов отчетов имеет ряд недостатков. Они сводятся, главным образом, к невозможности вносить правки в сформированный документ, а также изменять шаблоны отчета привычными средствами, например обычным текстовым редактором.

До последнего времени самым простым и широко применяемым решением представлялось применение механизма OLE. Например, для комбинации Word и VisualBasic возможна такая схема:
delphi
' NumStr - кол-во строк в отчете
' NewData (5,NumStr) - массив с данными для заполнения таблицы,
' заранее приведенными к символьному виду
' Itog - сумма, приведенная к символьному виду
' Pth - путь к исходному файлу
' Str_ndoc = 'BS190'
' Str_name = 'Петров И.И.'
.................
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objTable As Word.Table
' создаем объект Word
Set objWord = New Word.Application
' делаем его видимым - это не обязательно, но очень интересно :)
objWord.Visible = True
' открываем файл шаблона
Set objDoc = objWord.Documents.Open (Pth)
' делаем его активным
objDoc.Activate
' заполняем 'шапку документа' - номер и получатель
' - закладки 'ndoc' и 'name' соответственно
objDoc.Bookmarks ("ndoc").Range.Text = Str_ndoc
objDoc.Bookmarks ("name").Range.Text = Str_name
' связывам объект с таблицей
Set objTable = objWord.ActiveDocument.Tables (1)
' выделяем 2-ю строку таблицы в шаблоне
objTable.Cell (2, 1).Range.Select
' вставляем нужное кол-во строк-1 (т.к. одна уже есть в шаблоне)
If NumStr > 0 Then objWord.Selection.InsertRows (NumStr - 1)
' для каждой строки в каждую ячейку вставляем нужные данные из массива
For i = 1 To NumStr
For j = 1 To 5
objTable.Cell (i + 1, j).Range.Text = NewData (j, i)
j
i
' проставляем сумму 'Всего'
objTable.Cell (NumStr + 2, 5).Range.Text = Itog



delphi
' NumStr - кол-во строк в отчете
' NewData (5,NumStr) - массив с данными для заполнения таблицы,
' заранее приведенными к символьному виду
' Itog - сумма, приведенная к символьному виду
' pth - путь к файлу
' Str_ndoc = 'BS190'
' Str_name = 'Петров И.И.'
Dim res As Boolean ' результат выполнения функций
' заполняем 'шапку документа' - номер и получатель
' - закладки 'ndoc' и 'name' соответственно
res = In_Zakl1(pth, "ndoc", Str_ndoc)
res = In_Zakl1(pth, "name", Str_name)
' вставляем нужное кол-во строк-1 (т.к. одна уже есть в шаблоне)
res = In_TStr (pth, 1, 2, NumStr - 1)
' для каждой строки в каждую ячейку вставляем нужные данные из массива
For i = 1 To NumStr
For j = 1 To 5
res = In_Tcell1(pth, 1, i + 1, j, NewData (j, i))
j
i
res = In_Tcell1(pth, 1, NumStr + 2, 5, Itog) ' проставляем сумму 'Всего'


Заключение
Каковы преимущества и недостатки предложенной технологии? Начнем с достоинств. Во-первых, это более гибкая технология для формирования отчетов - даже если часть пользователей работает с OpenOffice, а часть с MS Office, программа создания отчетных документов универсальна. Во-вторых, несмотря на многоразовую перезапись файла шаблона во время работы, эта программа работает быстрее, чем связка OLE+Word. Тем более что приведенные выше алгоритмы могут совершенствоваться. Один из примеров кардинального повышения производительности приведен в листингах варианта для PascalDelphi. В-третьих, пользуясь свободным ПО, вы экономите деньги.
Теперь о проблемах. Основная из них - это недостаточная стандартизация формата RTF. Производители ПО, в целом придерживаясь единого стандарта, допускают несколько свободную трактовку частных моментов. Результат - проблемы с использованием "чужих" RTF-файлов, подготовленных в других редакторах. Например, MS Word сохраняет графические изображения внутри RTF-файла в виде последовательности шестнадцатеричных кодов, а OOWriter - как внешний файл.
Впрочем, эти проблемы решаются - стоит только приложить некоторые усилия.


2004.05.14 Автор: Александр Харьков
http://www.cpp.com.ua

@Drkb::04310
Количество статей: 4366
 
Вход
Имя:
Пароль:
Запомнить
Регистрация Забыли пароль?
Мини-чат :)
Необходима регистрация
Архив мини-чата
12-03-2025 15:42
DartKane
О! Нашёл в панели управления!
12-03-2025 15:37
DartKane
Всем привет. А как поменять пароль на свой?
04-07-2024 06:46
Adler
https://gamedev....27.png
04-07-2024 06:15
Adler
yt kjubyntcm yf 'njv cfqnt: https://gamedev....903#m2
02-05-2024 16:57
Divann
никогда не видел подобного сайта, как ваш [url=http://desksoft.ru] smiley!
02-05-2024 16:57
Divann
привет
26-03-2024 15:49
Roan
Надеюсь, оно ещё живо. Классный ресурс
03-03-2024 16:34
ПаХаН
Надо чтобы этот сайт был жив
20-02-2024 06:12
memoryspeak
обалденный сайт. искал ответ на вопрос, как скриптом закрыть вкладку, и наткнулся на это чудо.
08-02-2024 20:22
stark452
Разработчику огромный респект
Статистика
 СегодняВсего
Посетителей43810022330
Запросов2657449162273
Online
Пользователей0
Гостей9
imgimgimgimg
 
img
     00:00