Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Печать в MSWord ровными колонками / 8 сообщений из 8, страница 1 из 1
13.06.2006, 14:52
    #33787761
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
Из DW получаем данные и вставляем в Word строки в виде таблицы:
НАЗВАНИЕ КОЛ-ВО ЦЕНА СУММА
Стол 1 12.50 12.50
Барабан 3 15.00 45.00
Длинный текс... 5 0.50 100.00
ххх 135 237.00 31995.00

Вопрос: как получить такие строки в красивом виде?
Проблема в длине названия. Как узнать длину слова в см, а не в количестве букв (т.к. ширина букв разная)?
...
Рейтинг: 0 / 0
13.06.2006, 15:10
    #33787822
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
Riska wrote:

> Из DW получаем данные и вставляем в Word строки в виде таблицы:
> *НАЗВАНИЕ КОЛ-ВО ЦЕНА СУММА

Ну так и загони их в таблицу и не мучь себя и животное :).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
13.06.2006, 17:19
    #33788311
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
А можно примерчик?
Имеются переменные, из которых составляется строка. Как распечатать таблицу?
...
Рейтинг: 0 / 0
14.06.2006, 10:50
    #33789437
PavelBuilder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
У нас реализовано в виде шаблонов. Т.е. рядо с exe`шником есть папка с используемыми шаблонами. в твоем случае нужно будет нарисовать эту таблицу, рсакрасить понаписать всяко разного. а в программе используется написанный для этого nvo объект по сути использующий виндовое OLE, просто использование объекта удобно в плане обвязки сложных OLE вызовов и синтакиса - это обеспечиваемость читаемость кода, сделали только самое нужное и часто пользуемое, работает неплохо. Самое иинтересное, что шаблон можно в принципе не использоватьт и создавать все с помощью этого же объекта сервиса. Но шаблон удобнее, посокльу вечно меняются подписи в документах и шапки, в итоге пользователи (не все, а только допущенные) правят шаблон и все.

Ниже надергал примеры как это выглядит в коде:

//шаблон Word`a
lnv_word.of_SetTemplate('RS_InventoryNote')

//создавать все последующие таблицы с бордюром
lnv_word.of_TableBorder(TRUE)

//подключение к OLE серверу
lnv_word.of_connect()

//отобразим приложение
//lnv_word.of_visible(TRUE)

//заполнение некоторых шаблонных полей
li_rep_id = of_GetReportNum() //получим параметр - номер отчетности
lnv_word.of_setfield('inventory_nb',string(li_rep_id))

***************

//создадим таблицу и выведем ее порядковый номер таблицы
li_tbl_nb ++
lnv_word.of_writeln(string( li_tbl_nb ))

lnv_word.of_LeftIndent(0)
lnv_word.of_SetFontSize(12)
li_tbl_cnt = lnv_word.of_TableAdd(2,4)

//заполним шапку таблицы
lnv_word.of_tablesetcell(li_tbl_cnt,0,1, 'Инструмент', 1 )
lnv_word.of_tablesetcell(li_tbl_cnt,0,2, 'Код', 1 )
lnv_word.of_tablesetcell(li_tbl_cnt,0,3, 'Излишек', 1 )
lnv_word.of_tablesetcell(li_tbl_cnt,0,4, 'Недостача', 1)

//заполним данные таблицы
lnv_word.of_tablesetcell(li_tbl_cnt,2,1, dw_rep.object.r_instr_nm , 1 )
lnv_word.of_tablesetcell(li_tbl_cnt,2,2, dw_rep.object.r_instr_rus_code, 1 )
lnv_word.of_tablesetcell(li_tbl_cnt,2,3, &
string(dw_rep.object.r_surplus_q, uf_FieldFormat(dw_rep.object.r_surplus_q)),2)
lnv_word.of_tablesetcell(li_tbl_cnt,2,4, &
string(dw_rep.object.r_shortage_q, uf_FieldFormat(dw_rep.object.r_shortage_q)),2)

***************

//отобразим приложение
lnv_word.of_visible(TRUE)

//отключимся от OLE сервера
lnv_word.of_disconnect()

*************************************************************

Вобщем у нас есть объект работы с word`ом, который мы постояно совершенствуем. Есть такой же для работы с excel, скажу по секрету что работает он быстрее чем библиотека dw2xls с использованием того же OLE, хотя умеет очень немного и не так, но наши нужды удовлетворяет, а главное адекватен по производительности, хотя не так красиво выводит.
...
Рейтинг: 0 / 0
14.06.2006, 11:13
    #33789531
PavelBuilder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
вот пример функции объекта, пользуй :-)
/*
Добавляет в документ таблицу и
отрисовывает ей рамку если есть такая установка

*/

int li_tbl_nb, ii_line_style

li_tbl_nb = ioo_oleobject.Tables.Count
li_tbl_nb ++

ioo_oleobject.Tables.Add(ioo_oleobject.Paragraphs.Last.Range, ai_rows, ai_cols)

//создать таблицу с отступом вправо
ioo_oleobject.Tables.Item(li_tbl_nb).Rows.SetLeftIndent( ii_left_indent, 1 )

if ib_table_border then
ii_line_style = 1
else
ii_line_style = 0
end if

ioo_oleobject.Tables.Item(li_tbl_nb).Borders.OutsideLineStyle = ii_line_style
ioo_oleobject.Tables.Item(li_tbl_nb).Borders.InsideLineStyle = ii_line_style

return li_tbl_nb
...
Рейтинг: 0 / 0
14.06.2006, 13:59
    #33790163
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
Спасибо. Только вот беда, что без самого nvo этот код не помогает :(
Можно как-нибудь обзавестись самим nvo (mkrul2000@yahoo.com)?
Появилась другая идея. В связи с тем, что уже все написано, самым простым решением было бы не печатать всю строку сразу, а разделить ее на отдельные кусочки. В этом случае надо только добавить в вордовский документ еще несколько меток (т.е. конкретно указать, где начинается очередное поле). А после печати всей строки передвигать сами метки на строку ниже. Вопрос только в том, можно ли двигать из скрипта сами метки? Если да, то как?
...
Рейтинг: 0 / 0
14.06.2006, 14:09
    #33790202
PavelBuilder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
Честно говоря с layout`ом я сам не сильно заморачивался и точная ширина колонок меня мало интересовала, как раз наоборот - было важно чтобы они сами расширялись согласно введенному тексту.

Объект выслал :-)
Если в ответ мне допишите функции работы с layout`ом я буду рад, поскольку последнее время вкусы у пользователей возрасли, особенно в плане красивости.
...
Рейтинг: 0 / 0
14.06.2006, 21:55
    #33791545
grach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать в MSWord ровными колонками
Можно вывести данные построчно в ворду, а после преобразовать их в таблицу по разделителю. Под конец можно и отформатировть по желанию получившуюся таблицу.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Печать в MSWord ровными колонками / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]