powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Сохранить как RTF
9 сообщений из 9, страница 1 из 1
Сохранить как RTF
    #32688364
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, люди знающие, как-нибудь можно сохранить данные из DW стиля представления RichText в RTF - файл?
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32688381
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй след. схему.

dw->RichTextEdit.SaveDocument

т.е. использовать RichTextEdit как промежуточное звено.
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32688776
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, кувырок какой-то получается. Отформатированное окно перегнать в RichTextEdit? А как? Так ведь это на форме надо лишний контрол вешать. Вообще основная цель - перегнать из ДВ в Word. Может, какие-то другие варианты?
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32688974
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Человека, который сможет сохранить композитное DW в Word, общественность на руках носить будет ;)
А если необходимо просто в Word навставлять нанные в нужные места, то у нас например написан объект который шарится через OLE по закладкам Word'а и заполняет их из одноименных полей DW, но соответственно это годится только для всяких документов типа
Код: plaintext
Компания [], и [] заключило договор...
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32689207
umalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/88015&hl=
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32689554
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Estets
А вы бы не могли роделиться этим объектиком? Очень нужен! Спасибо заранее!
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32690440
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот просто кусок выдранный из функции заполнения Word честно говлря приводить к понятному виду лень, но надеюсь основные мысли понятны...

Замечание:
Код: plaintext
1.
2.
for k= 1  to len(ls_value)
  lole_word.selection.insertsymbol(asc(mid(ls_value,k, 1 )))
next
Обход проблемы с кодировкой, в PB 6.5

Код: plaintext
dw.columncount()
Функция возвращает количество колонок в DW

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
string ls_word, ls_save, ls_value, ls_format, ls_type, ls_name
string ls_template, template_name
oleobject lole_word, lole_doc
long ll_visible, ll_quit, ll_debug, ll_ret, i, j, k

//...............................
// CUT заполнение переменных
//...............................

lole_word = create oleobject

ll_ret = lole_word.connecttonewobject('Word.Application')
if ll_ret<> 0  then
	setpointer(p)
	messagebox('OLE','Невозможно подключится к OLE-объекту~r~nКод ошибки=' + string(ll_ret),stopsign!)
	return false
end if
	
lole_doc = lole_word.documents.open(ls_word + '\' + template_name + '.doc',true,true)


for i= 1  to long(lole_doc.bookmarks.count)	
	for j= 1  to dw.columncount()
		ls_name = upper(dw.describe('#' + string(j) +'.name'))
		if ls_name=upper(string(lole_doc.bookmarks[i].name)) then
			ls_format = dw.getformat(j)
			ls_type = upper(dw.describe('#' + string(j) +'.coltype'))
			choose case left(ls_type, 4 )
				case 'CHAR'
					ls_value = string(dw.getitemstring(al_row,j),ls_format)
				case 'DECI'
					ls_value = string(dw.getitemdecimal(al_row,j),ls_format)
				case 'DATE'
					ls_value = string(dw.getitemdatetime(al_row,j),ls_format)
				case else
					messagebox('OLE','Неизвестный тип исходных даных ' + ls_type)	
					ls_value = ''
			end choose
			lole_doc.bookmarks[i].select()
			for k= 1  to len(ls_value)
				lole_word.selection.insertsymbol(asc(mid(ls_value,k, 1 )))
			next
			exit
		end if
	next 	
	
next

lole_doc.saveas(ls_save + '\' + template_name + '.doc')

lole_doc.close()

destroy lole_doc

lole_word.quit()

ll_ret = lole_word.disconnectobject()
if ll_ret<> 0  then
	setpointer(p)
	messagebox('OLE','Невозможно откключится от OLE-объекта~r~nКод ошибки=' + string(ll_ret),stopsign!)
	return false
end if

destroy lole_word

Объект открывает DW и шаблон Word, потом по имени заполняет БукМарки в Wodr полями из DW.
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32690455
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Estets. Скажите пожалуйста, а что у Вас происходит с закладками MSWord в результате работы вот этой конструкции:
Код: plaintext
1.
2.
3.
			lole_doc.bookmarks[i].select()
			for k= 1  to len(ls_value)
				lole_word.selection.insertsymbol(asc(mid(ls_value,k, 1 )))
			next
Поясню вопрос. У меня после исполнения аналогичного кода закладка в документе удаляется, поэтому обращение вида {ref <Имя закладки> } возвращает ошибку.
Поэтому я эту закладку восстанавливаю примерно так:
Код: plaintext
1.
2.
3.
4.
5.
this.WordApplication.Selection.Goto(TRUE, 0 , 0 ,is_bookmark[li_i])
ll_BMStart=this.WordApplication.ActiveDocument.Bookmarks.item(is_bookmark[li_i]).Start
this.WordApplication.Selection.TypeText(ls_text[li_i])	
ll_BMEnd = this.WordApplication.Selection.Start
loleRange = this.WordApplication.ActiveDocument.Range ( ll_BMStart, ll_BMEnd)
this.WordApplication.ActiveDocument.Bookmarks.Add (is_bookmark[li_i], loleRange)
...
Рейтинг: 0 / 0
Сохранить как RTF
    #32692020
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас закладки остаются в тексте. (перед вставленным фрагментом)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Сохранить как RTF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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