Невозможно вставить новую строку в поле формы msword с помощью Powebuilder OLE - PullRequest
0 голосов
/ 14 июля 2010

У меня есть приложение, написанное на Powerbuilder 11.5, которое автоматически заполняет поля формы документа Word (MS Word 2003).

Документ Word защищен, поэтому можно изменять только поля формы.

В приведенном ниже коде вы видите, что я использую char(10) + char(13) для вставки новой строки, однако в сохраненном документе все, что я вижу, это 2 маленьких квадрата, где должны быть символы.Я также пытался использовать "~r~n", это также просто печатает 2 квадрата.

Когда я заполняю форму вручную, я могу вставлять новые строки столько раз, сколько захочу.Я могу попробовать?Или кто-нибудь знает другой способ заполнения словарных форм с помощью Powerbuilder?

//1 Shipper
ls_value = ids_form_info.object.shipper_name[1]

if not isnull(ids_form_info.object.shipper_address2[1]) then
 ls_value += char(10) + char(13) + ids_form_info.object.shipper_address2[1]
end if

if not isnull(ids_form_info.object.shipper_address4[1]) then
 ls_value += char(10) + char(13) + ids_form_info.object.shipper_address4[1]
end if

if not isnull(ids_form_info.object.shipper_country[1]) then
 ls_value += char(10) + char(13) + ids_form_info.object.shipper_country[1]
end if

if lnv_word.f_inserttextatbookmark( 'shipper', ls_value ) = -1 then return -1

f_inserttextatbookmark выглядит следующим образом:

public function integer f_inserttextatbookmark (string as_bookmark, string as_text, string as_fontname, integer ai_fontsize);
if isnull(as_text) then return 0
    iole_word = create OLEOBJECT

    iole_word.connectToNewobject( "word.application" )

    iole_word.Documents.open( <string to word doc> )

 iole_word.ActiveDocument.FormFields.Item(as_bookmark).Result = as_text

return 1
end function

Ответы [ 3 ]

2 голосов
/ 14 июля 2010

Отчасти ваша проблема заключается в том, что возврат каретки - это char (13), а перевод строки - char (10), поэтому для создания CRLF в Windows и DOS обычно требуется сделать char (13) + char (10).Если они вышли из строя, многие программы будут блокироваться.Тем не менее, «~ r ~ n» должен был произвести это для вас.

У меня есть успех (и я конвертирую для краткости, так что это может быть закрыть , чтобы исправить):

lole_Word.ConnectToNewObject ("Word.Application")
...
lole_Word.Selection.TypeText (ls_StringForWord)

Возможно, вы можете попробовать другое слово OLEкоманды, чтобы увидеть, если это что-то делать с конкретной командой.(После определения разрыва строки я хватаюсь за соломинку.)

Удачи,

Терри

0 голосов
/ 09 августа 2010

Я не использую поля формы, но могу вставить новые строки в документ Word из PowerBuilder, используя TypeText и "~ n". Может быть, вам просто нужно "~ n".

0 голосов
/ 14 июля 2010

Звучит так, как будто это может быть преобразование символов Unicode / Ansi.

за что стоит попробовать это ...

http://www.rgagnon.com/pbdetails/pb-0263.html

Надеюсьпомогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...