【问题标题】:Can't insert newline in msword form field using Powebuilder OLE无法使用 Powebuilder OLE 在 msword 表单字段中插入换行符
【发布时间】:2010-07-14 13:18:17
【问题描述】:

我有一个用 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_inserttextat书签如下:

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

【问题讨论】:

    标签: ms-word ole powerbuilder


    【解决方案1】:

    部分问题是回车符是 char(13),换行符是 char(10),所以要在 Windows 和 DOS 中创建 CRLF,通常需要 char(13) + char(10)。如果这些都出现问题,许多程序就会停止。但是,“~r~n”应该已经为您生成了。

    我已经成功了(为了简洁起见,我正在转换,所以它可能只是 close 来纠正):

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

    也许您可以尝试其他 Word OLE 命令,看看是否与特定命令有关。 (在定义了换行符之后,我就抓住了救命稻草。)

    祝你好运,

    特里

    【讨论】:

    • 感谢您的输入,您是对的,我已经对此进行了测试,TypeText 函数确实可以正确打印换行符。在使用 TypeText 之前,我使用 Selection.GoTo 转到表单字段的书签,但是它用文本覆盖了整个表单字段。如果文档受到保护,也会引发错误。我会再搞砸一点,至少我现在有一些东西可以依靠:-)
    【解决方案2】:

    听起来可能是 Unicode/Ansi 字符转换的事情。

    为了它的价值,你可以试试这个......

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

    希望对你有帮助。

    【讨论】:

    • 感谢您的建议,但在任何可用的编码类型中使用 blob 到字符串转换时似乎没有任何区别。
    【解决方案3】:

    我没有使用表单域,但我可以使用 TypeText 和“~n”在 PowerBuilder 的 Word 文档中插入换行符。也许你只需要“~n”。

    【讨论】:

    • 感谢您的回复,但该项目现在已落后于我。我最终放弃了整个表单,只使用了 TypeText。
    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多