Power builder rtf列不显示简单文本

时间:2017-05-19 10:39:14

标签: sql-server rtf powerbuilder datawindow

我需要转换某些数据窗口文本列(PB 11.5.1 - SQL Server 2008R2 - 数据类型文本)到RTF

我有两个问题:

  • 新数据显示正常,但现有数据不显示在 所有

  • RTF格式弹出窗口的高度非常有限,因此图标为一半 显示

对于第一个问题,我确实找到了解决方法,但它远非优雅!

我追加了这个:

{\rtf1\ansi\ansicpg1253\uc1\deff0{\fonttbl {\f0\fswiss\fcharset161\fprq2 Arial;} {\f1\fswiss\fcharset0\fprq2 Tahoma;} {\f2\froman\fcharset2\fprq2 Symbol;}} {\colortbl;\red0\green0\blue0;\red255\green255\blue255;} {\stylesheet{\s0\itap0\nowidctlpar\f0\fs24 [Normal];}{\*\cs10\additive Default Paragraph Font;}} {\*\generator TX_RTF32 13.0.501.502;} \deftab1134\paperw3240\paperh16838\margl0\margt0\margr0\margb0\widowctrl {\*\background{\shp{\*\shpinst\shpleft0\shptop0\shpright0\shpbottom0\shpfhdr0\shpbxmargin\shpbxignore\shpbymargin\shpbyignore\shpwr0\shpwrk0\shpfblwtxt1\shplid1025{\sp{\sn shapeType}{\sv 1}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fillColor}{\sv 12506623}}{\sp{\sn fFilled}{\sv 1}}{\sp{\sn lineWidth}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fBackground}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}}}\pard\itap0\nowidctlpar\plain\f1\fs20

在文本之前

并在最后添加}

我希望有另一种方法不包括更改实际数据!

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

对现有数据使用 PasteRTF PowerBuilder功能可能会更清晰一些。从技术上讲,这并不能解决您对更改数据的担忧,因为该函数可能会像手动操作一样添加RTF标记。

另一种可行的方法是尝试使用单独的 RichTextEdit 控件和 DataSource 函数。 DataSource函数允许RichTextEdit控件与DataWindow共享数据,并在其输入字段中显示数据。如果RichTextEdit控件中的输入字段与DataWindow中的列名称匹配,则DataWindow中的数据将分配给这些输入字段。我也会查看InputFieldNamesVisible属性,因为它会影响显示的内容。

帮助文件中的此示例将DataWindow控件dw_1建立为RichTextEdit rte_1的数据源。使用模板文档可能是一种解决显示数据的方法,但实际上并没有改变它 - 不确定我自己没有使用过它。

rte_1.DataSource(dw_1)

此示例将名为LETTER.RTF的文档插入RichTextEdit rte_letter(文档的输入字段名称与DataWindow对象d_emp中的列匹配),创建DataStore,将其与d_emp关联,并检索数据。然后它将文档插入rte_letter并将DataStore设置为rte_1的数据源:

DataStore ds_empinfo
ds_empinfo = CREATE DataStore
ds_empinfo.DataObject = "d_emp"
ds_empinfo.SetTransObject(SQLCA)
ds_empinfo.Retrieve()

rte_letter.InsertDocument("LETTER.RTF", TRUE)
rte_letter.DataSource(ds_empinfo)

至于图标问题 - 我不知道解决方案。