1.DataGrid.row=DataGrid.rows-1
  DataGrid.col=1
  这样就定位在所填加行的第二列上了.
2.打印DataGrid的内容,可以借用水晶报表控件,(VB的安装碟中有)它可以真接跟数据源邦定.如果你的数据很规则,用它很好实现.VB本身的打印功能不强,必要时借助第三方控件.

解决方案 »

  1.   

    DataGrid.row属性可以取得或设置DataGrid的当前行。
    DataGrid.col属性可以取得或设置DataGrid的当前列。
    你可以通过这两个属性定位DataGrid的当前网格,
    定位之后可以通过DataGrid.EditActive=true使光标显示在当前网格。至于打印,我想不到什么比较好的方法。我的经验总结大致可以通过以下几种方法:
    1、是楼上的方法,借助第三方控件或VB自带的DataReport进行打印及预览。
    2、是打印前调整DataGrid及窗体的外观(比如将窗体背景色改为白色),隐藏其他控件,然后调用Form.printform方法,打印完成后恢复,或通过一个隐藏的窗体进行打印(在隐藏窗体中放置DataGrid的复制,打印时该窗体只Load不显示)。
    3、自己控制打印,也就是根据你所需要的数据自己向Printer画线(Printer.Line)、写字(Printer.Print),这种方法的好处是比较随心所欲,打印出来的效果也比第二种好,但比较麻烦(我用这种比较多)。
      

  2.   

    动态的生成报表并打印(DataGrid)打印Datagrid  
    首先在报表设计器上放足够多的控件  
    1.在页标头中放足够多的Label  
    将页标头命名为  Head  
    以Label0.Label1.....Label99这样命名  
    2.在页细节中放足够多的Text  
    将页细节命名为  Bord  
    以Text0.Text1.....Text99这样命名  
     
    public  Print_Custon(byval  grid  as  datagrid,byval  rs  as  adodb.recordset)  
    dim  xs  as  double  
    dim  countwidth  as  double  
    dim  colwidth  as  double  
    dim  i  as  long  
    dim  j  as  long  
     
    for  i  =  0  to  grid.columns.count  -  1  
         countwidth  =grid.columns(i).width  +countwidth    
    next  i  
     xs  =  countwidth  /567/你的报表的宽度  '(把Datagrid的各个列的宽度累计并且换算成厘米,而xs则是你的datagrid和报表的比例)  
    with  Report  
       for  i  =  0  to  grid.columns.count-1  
             .section(  "Head  ").control(  "Label  "  &  i).caption=grid.columns(i).caption  
             .section(  "Head  ").control(  "Label  "  &  i).visible=grid.columns(i).visible  
             .section(  "Bord  ").control(  "Text  "  &  i).visible=grid.columns(i).visible  
             if  grid.columns(i).visible  and  grid.columns(i).width    >0  then  
                   '如果有未显示的列或列的宽度  <0则不显示  
                   j  =  i  
                   .section(  "Head  ").control(  "Label  "  &  i).left=colwidth  
                   .section(  "Bord  ").control(  "Text  "  &  i).left=colwidth  
                   .section(  "Head  ").control(  "Label  "  &  i).width=grid.columns(i).width  /  xs  
                   .section(  "Bord  ").control(  "Text  "  &  i).width=grid.columns(i).width  /  xs  
                   .section(  "Bord  ").control(  "Text  "  &  i).datafield=grid.columns(i).datafield  
               colwidth  =  colwidth  +.section(  "Head  ").control(  "Label  "  &  i).width  
               else  
                   '如果有未显示的列或列的宽度  <0则把它对应的TEXT的数据字段赋值为前面显示的列的数据字段  
                   .section(  "Bord  ").control(  "Text  "  &  i).datafield=grid.columns(j).datafield          
               end  if  
                     
       next  i  
       set  .datasource  =rs  
       .show    
    end  with 
           以上代码来自: SourceCode Explorer(源代码数据库)
               复制时间: 2002-06-02 22:17:57
               当前版本: 1.0.700
                   作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729
      

  3.   


    上面的code来自本论坛的f@Q!!!!!