问题1:在数据库中找到多条记录 并在msflexgrid中显示出来,其中有四个字段的内容比较长(比如:“研究方向1”, “研究方向2” ,”研究方向3“,  ”研究方向4“这些字段中的有些内容可能超过50个汉字)。
我想要的是在A4的纸上打印这些记录集, 打印时那些比如“研究方向一”的内容都得打出来(不管内容大小)
格式美观 一页尽量多打印几条记录(^_^ 经济实惠吗!)
谁能做上边的程序?大概写一下伪码也可以(关键部分写情)!最郁闷的是如何把msgflex与打印机连系起来?问题2
作出一个程序,如何打包?如何在桌面上创建一个快捷方式?

解决方案 »

  1.   

    用Printer写吧.具体不太好讲.你要判断一行的最高的那个然后决定在哪里打线.要不然用报表工具,ActiveReport是个不错的选择,可以自动控件内容的多少.
      

  2.   

    MSDN中有如何发布应用程序的详细介绍发布应用程序
    在创建 Visual Basic 应用程序后,您可能希望将该程序发布给其他人。您可以将使用 Visual Basic 创建的任何应用程序自由地发布给使用 Microsoft Windows 的任何人。可以通过磁盘、CD、网络、或者 intranet 以及 Internet 这些途径来发布应用程序。在发布应用程序时,必须经过下述两个步骤: 打包 — 必须将应用程序文件打包为一个或多个可以部署到选定位置的 .cab 文件,对于某些类型的软件包,您还必须为其创建安装程序。 .cab 文件是一种经过压缩的、很适合通过磁盘或 Internet 进行发布的文件。
    部署 — 您必须将打好包的应用程序放置到适当的位置,以便用户可以从该位置安装应用程序。这意味着将软件包复制到软盘上或复制到本地或网络驱动器上,也可以将该软件包部署到一个Web 站点。 
    您可以使用两个工具来打包和发布应用程序:打包和展开向导 (Package and Deployment Wizard)(以前的安装向导),或者是随 Visual Basic 安装软件提供的安装工具包。打包和展开向导通过提供有关如何配置 .cab 文件的选项,使发布应用程序所包含的许多步骤得以自动进行。安装工具包则让您可以自定义一些在安装过程中发生的事情。主题
     打包和展开向导 
    介绍打包和展开向导,并说明使用该向导可以完成的三个主要任务。此外还将该向导与安装工具包工程进行了比较。
     
     使用向导为应用程序打包 
    说明了为部署作准备,将应用程序打包的过程。描述了三类软件包:标准软件包、Internet 软件包以及从属文件。
     
     使用向导部署应用程序 
    说明将打好包的应用程序部署到软盘、本地或网络驱动器、Internet 以及 intranet 站点的过程。
     
     管理向导脚本 
    说明打包和部署脚本的含义及其使用方法。包括如何对原来使用打包和展开向导创建的脚本重命名、复制、以及删除的有关信息。
     
     安装工具包 
    描述安装工具包工程,并说明如何使用该工程来为自己的软件包的安装程序添加功能和进行自定义。
     
     手工编辑 Setup.lst 文件 
    说明 Setup.lst 文件的功能、该文件的各个部分、以及每部分的正确格式。
     
     手工创建发布媒体 
    说明如果不使用打包和展开向导来部署应用程序时,手工创建发布媒体的过程。
     
     与安装工具包一起使用打包和展开向导 
    说明如何修改安装工具包工程,同时仍使用打包和展开向导来创建安装程序。
     
     测试安装程序 
    描述用于测试应用程序安装的简单技巧。
     
     允许用户删除您的应用程序 
    描述用户如何从自己的机器上卸载您的应用程序,并列出了可能会遇到的常见问题。
     
     部署本地化的 ActiveX 控件 
    提供了有关如何解决在使用打包和展开向导部署国际化的 ActiveX 控件时可能会遇到的问题的信息。
     
    打包和展开向导
    Visual Basic 的打包和展开向导可以帮助您创建应用程序的 .cab 文件,将这些文件组合成一个包含安装所需的所有信息的单元或软件包,并将这些软件包交付给最终用户。您可以使用 Visual Basic 的打包和展开向导来创建要发布到软盘、CD、本地或网络驱动器、以及 Web 上的软件包。打包和展开向导使在创建和部署这些文件时所包含的很多工作得以自动进行。打包和展开向导提供了三个选项 “打包”选项帮助您将一个工程的文件打包为一个可以部署的 .cab 文件,而且在某些情况下还要创建一个安装程序来安装该 .cab 文件。向导确定需要打包的文件,并引导您作出所必需的选择,以便为您的工程创建一个或多个 .cab 文件。
    “部署”选项帮助您将打好包的应用程序传送到适当的发布媒体,例如软盘、网络共享、或 Web 站点。
    “管理脚本”选项让您可以查看和操作以前使用打包和展开向导时所保存的脚本。每次使用该向导时,都会保存一个包含您所做的所有选择的脚本。在以后的过程中,如果您想使用相似的设置值以及做出与原来相同的选择,就可以重新使用这些脚本。 
    详细信息 有关将工程打包的详细信息,请参阅本章稍后的“使用向导为应用程序打包”。有关将应用程序部署到 Web 或另外的目标的详细信息,请参阅本章稍后的“使用向导部署应用程序”。有关如何创建和使用脚本的详细信息,请参阅“管理向导脚本”。打包和展开向导与安装工具包的比较
    打包和展开向导能够帮助您为自己的 Visual Basic 应用程序创建和发布专业的安装程序。除了为应用程序创建 .cab 文件之外,该向导还通过编译随 Visual Basic 一起安装的安装工具包工程来为应用程序创建安装程序。这个安装程序被称为 setup1.exe。在多数情形下,打包和展开向导是创建和发布应用程序的 setup1.exe 程序的最佳途径。然而,如果要在应用程序的安装程序中使用打包和展开向导中没有提供的特性,则可以通过修改安装工具包工程来实现。与其它的 Visual Basic 工程一样,该工程的窗体、代码、及其功能也可以被修改或增强。注意 打包和展开向导和安装工具包只能为 Visual Basic 应用程序创建安装程序和发布媒体。如果要为其它基于 Windows 的应用程序创建安装程序,请使用与相应的开发产品一起提供的安装工具包或在 Windows SDK 中提供的安装工具包。详细信息 有关使用该工具包工程将应用程序打包和部署的详细信息,请参阅本章稍后的“安装工具包”。
    使用向导为应用程序打包
    为应用程序打包是指创建一个软件包的操作,该软件包可以将您的应用程序安装到用户的计算机上。软件包由一个或多个 .cab 文件组成,文件中包含了用户安装和运行应用程序所需的被压缩的工程文件和任何其它必需的文件。这些文件可能包括安装程序、辅助的 .cab 文件、或其它必需的文件。这些附加的文件根据您创建的软件包类型不同而不同。您可以创建两种软件包,标准软件包或 Internet 软件包。如果计划通过磁盘、软盘,或网络共享来发布应用程序,则应创建一个标准软件包。如果计划通过 intranet 或 Internet 站点来发布,则应创建一个 Internet 软件包。在多数情形下,可以使用 Visual Basic 提供的打包和展开向导来为您的应用程序打包。您可以手工打包应用程序,不过向导提供了很有用的快捷方式,并能自动处理一些在手工打包过程中不得不自己完成的任务。注意 另外,可以将安装工具包和打包和展开向导一起使用。您可以修改安装工具包工程来自定义自己的安装程序,并添加打包和展开向导所没有提供的特性,然后使用向导来打包和部署应用程序。除了创建标准和 Internet 软件包之外,还可以使用打包和展开向导的打包部分来创建从属文件。从属文件列出了必须随应用程序的工程文件一起发布的运行时部件。重点 无论何时创建软件包,您都应确保已在“工程属性”对话框的“生成”选项卡中设置了工程的版本号码。如果您要发布一个现有应用程序的新版本,那么这一点特别重要:如果没有对版本号进行适当的更改,最终用户的计算机可能会认为关键文件不需要更新。详细信息 有关标准软件包及其内容的详细说明,请参阅本章稍后的“标准软件包”。有关 Internet 软件包及其内容的详细信息,请参阅“Internet 软件包”。有关将两个工具一起使用来创建自定义安装程序的详细信息,请参阅本章稍后的“与安装工具包一起使用打包和展开向导”。有关从属文件内容的说明,请参阅“从属文件”。允许发布的文件
    您可以自由地发布使用 Visual Basic 创建的任何应用程序或部件。除了可执行 (.exe) 文件之外,应用程序可能还需要其它文件,例如 DLL、ActiveX 控件(.ocx 文件)、或位图(.bmp 文件)。您可以合法地发布示例应用程序文件,以及在您的系统上第一次安装 Visual Basic时复制到 \Visual Studio\Common\Graphics 目录的 \Icons 子目录中的文件。Microsoft 对这些应用程序的商用性或实用性不作任何担保、表明、或暗示,而且也不对其使用承担任何义务或责任。如果您已购买 Visual Basic 的专业版或企业版,也可以发布预先复制到 \Visual Studio\Common\Graphics 和 \Program Files\Common Files\ODBC 子目录中的任何文件。注意 您也可以发布已购买的其它 ActiveX 控件、.exe 文件、以及 DLL。对每个计划发布的文件,请参考其厂商的许可证协议,以确定您是否具有随应用程序发布该文件的权限。打包过程的全部步骤
    不论创建的软件包是什么类型,也不论创建软件包使用的是什么工具,都必须采取几个步骤。注意 打包和展开向导能自动执行很多步骤。 确定要创建的软件包类型。您可以为基于Windows 的、要通过磁盘、CD、或在网络上发布的程序创建一个标准软件包;或者可以为要在 Web 上发布的程序创建一个 Internet 软件包。也可以选择只创建从属文件。
    确定需要发布的文件。向导在创建软件包之前,必须确定应用程序的工程文件以及从属文件。工程文件是包含在工程本身中的文件,例如,.vbp 文件及其内容。从属文件是运行应用程序所需要的运行时文件或部件。从属信息保存在 vb6dep.ini 文件中,或工程中与部件相对应的各种 .dep 文件中。
    确定将文件安装到用户机器上的位置。程序和安装文件通常被安装到 Program Files 目录的某个子目录中,而系统和从属文件通常被安装到 \Windows\System 或 \Winnt\System32 目录中。您的安装程序必须考虑这一点,并确定每个文件要被安装在何处。
    创建软件包。向导引用所有必需的文件来创建软件包,并为该软件包创建安装程序 (setup1.exe)。这一步骤的最终结果是得到一个或多个 .cab 文件以及任何必需的安装文件。
    部署软件包。部署过程包括创建发布媒体,并将所有必需的文件复制到用户可以访问到的位置。有关部署的详细信息,请参阅本章稍后的“使用向导部署应用程序”。 
    详细信息 有关通用运行时库、安装和从属文件的全部列表,请参阅本章稍后的“需要发布的文件”。有关创建 .dep 文件的详细信息,请参阅本章稍后的“从属文件”。
      

  3.   

    用VB编译成可执行文件,用Setup factory5.0生成即可,傻瓜式安装。 最简单的步骤:用VB自带的工具package&development.
      

  4.   

    MSFlexGrid1只是起到一個顯示的作用,你只要把它的DataSource,printer.print就可以呀!
    程序如下:
    Public DB As New ADODB.Connection
    Public rs As New ADODB.Recordset
    Dim sql As Stringsql="select ................"
    set rs =DB.Excute(sql)
    MSFlexGrid1.DataSource=rs
    printer.print rs
      

  5.   

    問題二
    步驟如下:
    開始-->程序-->MicroSoft Visual Basic6.0-->MicroSoft Visual Basic6.0工具-->封裝部署精靈
    然後按照提示做就可以了
    很簡單的
    在這之前把程序編譯成 exe 檔。
      

  6.   

    打包的话用Setup Factory吧,这个很好用
      

  7.   

    用ActiveReport很简单。添加好TextBox控件,在属性窗口中设置其相应的DataField属性(比如下面的Field1其DataField属性为a),双击ActiveReport添加代码:Private Sub ActiveReport_DataInitialize()
        Me.Fields.Add "a"
        Me.Fields.Add "b"
        Me.Fields.Add "c"
        Me.Fields.Add "d"
    End SubPrivate Sub ActiveReport_FetchData(eof As Boolean)
        Static i As Integer
        If frmMain.MSHFlexGrid1.TextMatrix(1, 1) <> "" Then
            i = i + 1
            If i > frmMain.MSHFlexGrid1.Rows - 1 Then
                eof = True
                Exit Sub
            Else
                eof = False
            End If
            Fields("a").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 1)
            Fields("b").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 2)
            Fields("c").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 3)
            Fields("d").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 4)
            End If
        End If
    End Sub
      

  8.   

    什么是ActiveReport?
    我怎么找不到这个东东!?
    照你说它是一个控件 但是在那找? 必须导入马?我得没有亚!
      

  9.   

    什么是ActiveReport?
    我怎么找不到这个东东!?
    照你说它是一个控件 但是在那找? 必须导入马?我得没有亚!//ActiveReport是第三方的报表控件,需要购买或者下载
    另外可以试试
    http://www.csdn.net/cnshare/soft/12/12304.shtm 的dllprint
    问题2
    作出一个程序,如何打包?如何在桌面上创建一个快捷方式?
    //用Setup factory
    //这是5.0的,6.X有更多更新,建议使用6.x
    http://www.yesky.com/SoftChannel/72342376156233728/20010523/180983.shtml
      

  10.   

    Public Function PrintGrid(Msg As MSHFlexGrid)
    On Error GoTo err
    Dim fnt As Single
    Dim pp, N As Integer
    Dim ss, foot As String
    Dim kan As Long
    Dim dd As Variant
    pp = 0 '设置开始页码0
    Dim stry As Integer, strx As Integer, strx1 As Integer, stry1 As Integer, linw As Integer, page1 As Integer, p As Integer, i As Integer, j As Integer, t_Row As Integer, m_stry As Integer
    Dim n_col As Long, n_row As Long
    n_col = Msg.Cols - 1
    n_row = Msg.Rows - 1
    ReDim ax(1 To n_col)  '定义打印的列数
    ReDim bx(0 To n_row)
    ss = InputBox("请输入打印标题:", "表格打印")
    kan = 0
    For i = 1 To Msg.Cols - 1
        Msg.Col = i
        ax(i) = Msg.CellWidth  '定义每列宽
        kan = kan + ax(i) '计算表格总宽度
    NextFor i = 0 To n_row
        Msg.Row = i
        bx(i) = Msg.CellHeight
        linw = linw + bx(i)
    Next
    page1 = Int(InputBox("请输入每页打印行数:", "表格打印")) '定义每页行数
    strx = 1200
    strx1 = 1200 '定义X方向起始位置
    stry = 1200
    stry1 = 1200 '定义Y方向起始位置
    fnt = 8 '定义字体大小
    p = 0
    Printer.FontName = "宋体" '定义字体dd = prnt1(kan / 2 - Len(ss) * 10, 600, 14, ss) '打印标题
    dd = prnt1(1200, 900, 10, "打印日期: " & Str(Date))
    Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
    For j = 0 To Msg.Rows - 1 'gridrow为所要打印的行数
        Msg.Row = j
        strx = strx1
        Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
        p = p + 1
        For i = 1 To Msg.Cols - 1
            If ax(i) > 0 Then
                Msg.Col = i
                dd = prnt1(strx, stry, fnt, Msg.Text)
                strx = strx + ax(i)
            End If
        Next    If p > page1 Then 'next page
            p = 0
            strx = strx1
            'line last line
            Printer.Line (strx - 50, stry - 30 + bx(j))-(strx + kan - 10, stry - 30 + bx(j))
            m_stry = stry
            stry = stry1
            'line col
            For N = 1 To Msg.Cols - 1
                If ax(N) > 0 Then
                    Printer.Line (strx - 30, stry - 30)-(strx - 30, m_stry - 30 + bx(j))
                    strx = strx + ax(N)
                End If
            Next
            Printer.Line (strx - 30, stry - 30)-(strx - 30, m_stry - 30 + bx(j))
            pp = pp + 1
            foot = "第 " + CStr(pp) + "页"
            dd = prnt1(strx - 1000, m_stry + bx(j) + 100, 10, foot$) '打印页角码
            
            Printer.NewPage 'next page
            dd = prnt1(kan / 2 - Len(ss) * 10, 600, 14, ss) '打印标题
            dd = prnt1(1200, 900, 10, "打印日期: " & Str(Date))
            strx = strx1
            stry = stry1
            Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30) ' print first row
            t_Row = Msg.Row
            Msg.Row = 0
            Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
            For i = 1 To Msg.Cols - 1
                If ax(i) > 0 Then
                    Msg.Col = i
                    dd = prnt1(strx, stry, fnt, Msg.Text)
                    strx = strx + ax(i)
                End If
            Next
            Msg.Row = t_Row
            stry = stry + bx(j)
        Else
            stry = stry + bx(j)
        End If
    Next
        'st = stry    'For o = p To page1 + 1
        strx = strx1
        Printer.Line (strx - 50, stry - 30)-(strx + kan - 10, stry - 30)
        'stry = stry + linw
        'Next
        'End If
        m_stry = stry
        stry = stry1
        strx = strx1
        stry = stry1 'line col
        For N = 1 To n_col
            If ax(N) > 0 Then
                Printer.Line (strx - 30, stry - 30)-(strx - 30, m_stry - 30)
                strx = strx + ax(N)
            End If
        Next
        Printer.Line (strx - 30, stry - 30)-(strx - 30, m_stry - 30)
        pp = pp + 1
        foot = "第 " + CStr(pp) + "页"
        dd = prnt1(strx - 1000, m_stry + 100, 10, foot$) '打印页角码Printer.EndDoc '打印结束
    err:
        Exit Function
    End Function
      

  11.   

    下载后的第三方控件我怕要放到一个vb安装文件的某个位置吧 但是放到那个文件夹下呢?
    //放在哪都行,关键是要注册该控件
    Regsvr32 YourControl
      

  12.   

    第一个问题最简单的方法的是使用第三方控件,直接可以打印msflexgrid的, 我这里有一大堆这样的源代码,如果需要可以跟我联系..
    第二个问题,用SF打包时,直接有这个功能,傻瓜式的安装程序制作,方便快捷!
    emai:[email protected]
      

  13.   

    谁能说一下dataenvironment的使用?
    这个好像也是关于报表打印的!?