walter 发表于 2012-11-10 21:15:00

有关vsprinter8控件问题

ComponentOne你好:

      我在使用你们的vsprinter8插件的时候遇到一个小问题,描述如下:
      我的打印机设置成了 "adobe pdf"
      当运行到 "VSPrinter1.PrintDoc这一句后系统会弹出来一个保存文件的对话框,请问这个对话框要怎样才能让它不出现?因为是批量生成pdf,我希望能直接保存到磁盘。
      我也用过你们的另一个插件 vsreport8,这个可以直接导出 PDF格式的文件,不过对汉字的支持不是很好,经常出现乱码,所以只能选择 adobe pdf 打印,如果乱码的问题你们可以解决,希望不吝赐教。
                     
      我是一个对计算机程序很感兴趣的分子生物学研究员,现在正在自学的语言是VB6.0,也许提的问题比较幼稚,也许我已经落后了这个世界10年,不过还是希望得到你们的一些指导。
      谢谢。

iceman 发表于 2012-11-12 15:00:00

回复 1楼walter的帖子

walter 你好,
1.VS Printer 无法设置不弹出保存对话框。
可以直接导出到 RTF 文件。一定要生存 PDF 文件吗?下面是一段测试代码:

   With vp
   
      .ExportFile = "E:\method1.rtf"
      .ExportFormat = vpxRTF
      
   
      .StartDoc
   
      .FontSize = 16
      .FontBold = True
      .Paragraph = "Text in tables exports to PLAIN RTF"
      .Paragraph = ""
      .FontBold = False
      .FontSize = 11
      
      .StartTable
      .AddTable "2000|^1300|>2000", "", ""
      .TableCell(tcRows) = 10
      For r = 1 To 10
            For c = 1 To 3
                .TableCell(tcText, r, c) = "Cell " & r & " " & c
                If c Mod 2 <> r Mod 2 Then
                  .TableCell(tcBackColor, r, c) = vbYellow
                  .TableCell(tcForeColor, r, c) = vbBlue
                  .TableCell(tcFontBold, r, c) = True
                End If
            Next
      Next
      .EndTable
   
      .FontSize = 16
      .FontBold = True
      .Paragraph = ""
      .Paragraph = ""
      .Paragraph = ""
      .Paragraph = "Or you can use tabs..."
      .Paragraph = ""
      .FontBold = False
      .FontSize = 11
      
      For r = 1 To 5
            .Text = String(r, Chr(9))
            .Paragraph = "Margin now set to " &amp; .MarginLeft
      Next
      .MarginLeft = 1440
      
      .EndDoc
      
    End With

2.关于 vsreport8 问题,我需要向开发人员核实,看是否能否解决。
3.请问使用的是正式版还是试用版?如果是试用版建议使用 C1 Winform 平台来实现该功能,使用相对 VB6 来说更加方便。

walter 发表于 2012-11-17 13:36:00

回复 2楼iceman的帖子

看见你的回复很惊喜,本来不报希望的,非常感谢你们,很专业。PDF生成是必须的,这是日常工作上的需求。这个问题我已经基本解决了。

再请教一个小问题:vsreport8怎么换页啊?也就是增加一页。
我做的vsreport8是使用模板的,也就是先画好一个.xml,里面留几个空text,生成报表的时候直接往里面填几个数据,现在的问题是一页数据填完后怎样增加新的一页重复原来的数据添加操作?
现在我的报表只能生成一页,也就是最后一次填入的数据。
一张纸大概只填写5个数据,写完就要换页,麻烦指教一下。

iceman 发表于 2012-11-20 16:30:00

回复 3楼walter的帖子

walter 你好,
不用客气,没有帮到什么。
请问你的报表结构是?
XML 模板一共有几页呢?

walter 发表于 2012-11-20 21:19:00

回复 4楼iceman的帖子

XML模板只有一页,报表没什么结构,就是vsflexgrid的一个数据表格做数据源,需要按照规定的格式每一行生成一页。
类似于小学生的填空题,填完一页要换下一页,但是我不会增加新的页面。

walter 发表于 2012-11-20 21:26:00

哦,我没有用.DataSource,是一个格子一个格子填进去的,因为有需要计算的地方。

With Form10.VSReport1
For n = 1 To VSFlexGrid8.Rows - 1
   .Load &quot;F:\编程VSFlexgrid\temp-COA\maxprep-for-qc.xml&quot;, &quot;maxprep-for-qc&quot;
   .Fields.Item(&quot;ddh&quot;).Text = VSFlexGrid8.TextMatrix(n, 1)
Next n
   .Render Form10.VSPrinter1
   Form10.Show 1, Me
End With
页: [1]
查看完整版本: 有关vsprinter8控件问题