我用DBGrid显示的是ACCESS数据库中的一个表,请问怎么编写打印的代码啊?就要最基本的那种, 能把代码写出来吗?谢谢!

解决方案 »

  1.   

    用 QuickRep控件    QuickRep1.Preview;  //预览打印
        QuickRep1.Print;   //直接打印
      

  2.   

    use DB;
    procedure TForm1.Preview(Grid: TDBGrid); 
    var 
      i, CurrentLeft, CurrentTop : integer; 
      BMark: TBook;//use DB; 
    begin 
      QuickRep1.Dataset:=Grid.DataSource.DataSet; 
      if not QuickRep.Bands.HasColumnHeader then 
        QuickRep.Bands.HasColumnHeader:=true; 
      if not QuickRep.Bands.HasDetail then 
        QuickRep.Bands.HasDetail:=true; 
      QuickRep.Bands.ColumnHeaderBand.Height:=Abs(Grid.TitleFont.Height) + 10; 
      QuickRep.Bands.DetailBand.Height:=Abs(Grid.Font.Height) + 10; 
      CurrentLeft := 12; 
      CurrentTop := 6;   //{Record where the user stopped in the DBGrid} 
      BMark:=Grid.DataSource.DataSet.GetBook; 
      {Don't let the grid flicker while the report is running} 
      Grid.DataSource.DataSet.DisableControls; 
      try 
        for i:=0 to Grid.FieldCount - 1 do 
        begin 
          if (CurrentLeft+Canvas.TextWidth(Grid.Columns[i].Title.Caption))
            >(QuickRep.Bands.ColumnHeaderBand.Width) then 
            begin 
              CurrentLeft := 12; 
              CurrentTop := CurrentTop + Canvas.TextHeight('A') + 6; 
              QuickRep.Bands.ColumnHeaderBand.Height := 
                QuickRep.Bands.ColumnHeaderBand.Height + 
                (Canvas.TextHeight('A') + 10); 
              QuickRep.Bands.DetailBand.Height :=                         
                QuickRep.Bands.DetailBand.Height + 
                (Canvas.TextHeight('A') + 10); 
            end; 
          
         {Create Header with QRLabels} 
          with TQRLabel.Create(QuickRep.Bands.ColumnHeaderBand) do 
          begin 
            Parent := QuickRep.Bands.ColumnHeaderBand; 
            Color := QuickRep.Bands.ColumnHeaderBand.Color; 
            Left := CurrentLeft; 
            Top := CurrentTop-15;//
            Caption:=Grid.Columns[i].Title.Caption; 
          end; 
          
          {Create Detail with QRDBText} 
          with TQRDbText.Create(QuickRep.Bands.DetailBand) do 
          begin 
            Parent := QuickRep.Bands.DetailBand; 
            Color := QuickRep.Bands.DetailBand.Color; 
            Left := CurrentLeft; 
            Top := CurrentTop; 
            Alignment:=Grid.Columns[i].Alignment; 
            AutoSize:=false; 
            AutoStretch:=true; 
            Width:=Grid.Columns[i].Width+15; //
            Dataset:=QuickRep.Dataset; 
            DataField:=Grid.Fields[i].FieldName; 
            CurrentLeft:=CurrentLeft + (Grid.Columns[i].Width) + 15; 
          end; 
        end;    // lblPage.Left := bdTitle.Width - lblPage.Width - 10; 
       // lblDate.Left := bdTitle.Width - lblDate.Width - 10;     {After all, call the QuickRep preview method} 
        QuickRep.PreviewModal; {or Preview if you prefer}   finally 
        with Grid.DataSource.DataSet do 
        begin 
          GotoBook(BMark); 
          FreeBook(BMark); 
          EnableControls; 
        end; 
      end; 
    end;
      

  3.   

    你可以用DBGRIDEH控件,可以真接打印DBGRID里的内容
      

  4.   

    其实你在报表控件中连接你的
    dbgrid的数据集就可以了,