找回密码
 立即注册

QQ登录

只需一步,快速开始

lifesky2006
注册会员   /  发表于:2014-10-13 23:09:00
21#

我修改了下,请再帮忙看看

我也不知道什么原因,这个提示好像跟我用到的控件也没关系,我用到了几个第三方控件
我今天晚上把他们都改成自带控件了,你在测试下看看


回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-13 23:21:00
22#
在frmPageSet里面
有一个btnSave_click()事件,下面的代码里


    For Each X In Printers
        If X.DeviceName = cmbPrinter.Text Then
            Set Printer = X
            frmPrint.fps.hDCPrinter = X.hDC
            Printer.PaperSize = Val(cmbPaperSize.Tag)
            If Printer.PaperSize = 256 Then '自定义
                Printer.Width = Val(txtWidth.Text) * 567
                Printer.Height = Val(txtHeight.Text) * 567
            End If
            Printer.PaperBin = Val(cmbPaperbin.Tag)
            Exit For
        End If
    Next

红色字体那行代码,也就是设置spread打印机关联的那行。去掉后就不会出现问题,加上以后,我这里打印机选择

360截图20141013231620531.jpg (7.82 KB, 下载次数: 94)
回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-13 23:26:00
23#
而且我也不知道我这个例程能不能真正实现和打印机同步设置,因为我最近在出差,没有打印机可以测试。
麻烦也顺便帮我测试下

谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-14 14:38:00
24#
回复 22楼lifesky2006的帖子

很抱歉,你的Demo我还是无法运行起来。提示一样的错误。

页面总数和打印方向是通过什么方法设置的?猜测是 Spread 接收了打印机的默认设置改变了这两个属性。
回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-14 15:17:00
25#
那个错误是什么造成的“? 我在我这里两台电脑上测试都可以允许的
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-14 18:46:00
26#
回复 25楼lifesky2006的帖子

页面总数和打印方向是通过什么方法设置的?猜测是 Spread 接收了打印机的默认设置改变了这两个属性。

抱歉,我暂时也不知道原因,我会尝试调试下 Demo 看能否运行通。
回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-16 15:42:00
27#
我在4台电脑上做了测试,工程都是可以打开的,3台XP系统,一台VMWARE虚拟机上的WIN7 64位
有2台是安装过VB的,1台是从来没有装过VB,我临时安装的,运行工程都没有问题的,您那出现的错误是在打开工程的时候还是运行的时候?
我的工程都是VB自带的控件,没有再使用第三方控件的
回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-16 15:59:00
28#
我再重新上传一次,同时把工程里用到的所有控件都打包进去了,您再试试
谢谢


打印测试.rar (1.23 MB, 下载次数: 2)
回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-16 16:11:00
29#
页面总数和打印方向什么的都是参考的SPREAD的例程

页面总数设置:在frmPrint窗体里
Private Sub Form_Activate()
    fpSpreadPreview1.hWndSpread = fps.hWnd
    txtPage.Text = fpSpreadPreview1.PageCurrent & "/" & fps.PrintPageCount
End Sub

这个是保存以后的设置,包括打印方向和其他设置
    With frmPrint.fps
        For i = 0 To 3
            If optPrintType(i).Value = True Then
                .PrintType = i
                Exit For
            End If
        Next
        If .PrintType = 3 Then     '页码范围
            .PrintPageStart = Val(txtStart.Text)
            .PrintPageEnd = Val(txtEnd.Text)
        End If
        If optLandscape.Value = True Then
            .PrintOrientation = PrintOrientationLandscape
'            Printer.Orientation = vbPRORLandscape
        Else
            .PrintOrientation = PrintOrientationPortrait
'            Printer.Orientation = vbPRORPortrait

        End If
        .PrintMarginTop = Val(txtTop.Text) * 567
        .PrintMarginBottom = Val(txtBottom.Text) * 567
        .PrintMarginLeft = Val(txtLeft.Text) * 567
        .PrintMarginRight = Val(txtRight.Text) * 567
        tmp = ""
        If InStr(txtHeader.Text, vbCrLf) > 0 Then    '有换行
            pl = Split(txtHeader.Text, vbCrLf)
            For i = LBound(pl) To UBound(pl)
                txtHeader.Text = CStr(pl(i))
                tmp = tmp & GetData(txtHeader, Combo1.Text)
                If i < UBound(pl) Then tmp = tmp &amp; "/n"
            Next
        Else
            tmp = GetData(txtHeader, Combo1.Text)
        End If
        .PrintHeader = tmp
        tmp = ""
        If InStr(txtFooter.Text, vbCrLf) > 0 Then    '有换行
            pl = Split(txtFooter.Text, vbCrLf)
            For i = LBound(pl) To UBound(pl)
                txtFooter.Text = CStr(pl(i))
                tmp = tmp &amp; GetData(txtFooter, Combo2.Text)
                If i < UBound(pl) Then tmp = tmp &amp; "/n"
            Next
        Else
            tmp = GetData(txtFooter, Combo2.Text)
        End If
        .PrintFooter = tmp
        .PrintColHeaders = chkColHeader.Value
        .PrintRowHeaders = chkRowHeader.Value
        .PrintGrid = chkGridLine.Value
        .PrintBorder = chkBorder.Value
        .PrintCenterOnPageH = chkHCenter.Value
        .PrintCenterOnPageV = chkVCenter.Value
        If Len(txtTitle.Text) > 0 Then
            myTitle.Title = txtTitle.Text
            myTitle.Name = txtTitle.Font.Name
            myTitle.Size = txtTitle.Font.Size
            myTitle.Bold = txtTitle.Font.Bold
            myTitle.Italic = txtTitle.Font.Italic
            myTitle.Underline = txtTitle.Font.Underline
            myTitle.Strikethrough = txtTitle.Font.Strikethrough
            If .ColHeaderRows = 1 Then
                .ColHeaderRows = .ColHeaderRows + 1
                For i = 1 To .MaxCols
                    .Col = i
                    .Row = SpreadHeader
                    tmp = .Text
                    .Row = SpreadHeader + 1
                    .Text = tmp
                Next
            End If
            .Col = 1
            .Row = SpreadHeader
            .Text = myTitle.Title
            .Font.Name = myTitle.Name
            .Font.Size = myTitle.Size
            .FontBold = myTitle.Bold
            .FontItalic = myTitle.Italic
            .FontUnderline = myTitle.Underline
            .FontStrikethru = myTitle.Strikethrough
            .AddCellSpan 1, SpreadHeader, .MaxCols, 1
'            .TypeHAlign = TypeHAlignCenter
        End If
    End With
    For Each X In Printers
        If X.DeviceName = cmbPrinter.Text Then
            Set Printer = X
            frmPrint.fps.hDCPrinter = X.hDC
            Debug.Print frmPrint.fps.hDCPrinter
            Printer.PaperSize = Val(cmbPaperSize.Tag)
            If Printer.PaperSize = 256 Then '自定义
                Printer.Width = Val(txtWidth.Text) * 567
                Printer.Height = Val(txtHeight.Text) * 567
            End If
            Printer.PaperBin = Val(cmbPaperbin.Tag)
            Exit For
        End If
    Next
    Printer.Copies = Val(txtCopies.Text)
回复 使用道具 举报
lifesky2006
注册会员   /  发表于:2014-10-16 16:12:00
30#
请帮帮忙,我不知道你那里为什么不能运行我的demo,我都测试了4台电脑了,都可以运行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部