//打印Button5Click
procedure TForm1.Button5Click(Sender: TObject);
begin
  form2.ClientDataSetlc.LoadFromFile('pxjg.cds');
  form2.clientdatasetlc.addIndex('lc','dps',[ixDescending],'','',0);
  form2.clientdatasetlc.indexname:='lc';
  form2.QuickRep1.Preview;
end;

解决方案 »

  1.   

    我是指生成自己编写的预览窗体,不是用quickrep
      

  2.   

    能够打印数dbgrid?
    采用动态制作报表?
      

  3.   

    做个from将打印预览控件放上去。添加几个控制按钮,将你的打映报表连接上打印预览控件就可以了。打印预览控件在打印控件栏上有
      

  4.   

    Creating a Quick Report layout at runtime to print DBGrid's contents First make a new form, name it as TGridReport and drop a TQuickRep on it. 
    Rename you QuickRep to GridRep. Then make a Preview that receives a DBGrid as parameter, just like this: procedure TGridReport.Preview(Grid: TDBGrid); 
    var 
      i, CurrentLeft, CurrentTop : integer; 
      BMark: TBook; 
    begin 
      GridRep.Dataset:=Grid.DataSource.DataSet;   if not GridRep.Bands.HasColumnHeader then 
        GridRep.Bands.HasColumnHeader:=true;   if not GridRep.Bands.HasDetail then 
        GridRep.Bands.HasDetail:=true;   GridRep.Bands.ColumnHeaderBand.Height:=Abs(Grid.TitleFont.Height) + 10; 
      GridRep.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)) > 
            (GridRep.Bands.ColumnHeaderBand.Width) then 
          begin 
            CurrentLeft := 12; 
            CurrentTop := CurrentTop + Canvas.TextHeight('A') + 6; 
            GridRep.Bands.ColumnHeaderBand.Height := GridRep.Bands.ColumnHeaderBand.Height + 
              (Canvas.TextHeight('A') + 10); 
            GridRep.Bands.DetailBand.Height := GridRep.Bands.DetailBand.Height + 
              (Canvas.TextHeight('A') + 10); 
          end; 
          {Create Header with QRLabels} 
          with TQRLabel.Create(GridRep.Bands.ColumnHeaderBand) do 
          begin 
            Parent := GridRep.Bands.ColumnHeaderBand; 
            Color := GridRep.Bands.ColumnHeaderBand.Color; 
            Left := CurrentLeft; 
            Top := CurrentTop; 
            Caption:=Grid.Columns[i].Title.Caption; 
          end; 
          {Create Detail with QRDBText} 
          with TQRDbText.Create(GridRep.Bands.DetailBand) do 
          begin 
            Parent := GridRep.Bands.DetailBand; 
            Color := GridRep.Bands.DetailBand.Color; 
            Left := CurrentLeft; 
            Top := CurrentTop; 
            Alignment:=Grid.Columns[i].Alignment; 
            AutoSize:=false; 
            AutoStretch:=true; 
            Width:=Grid.Columns[i].Width; 
            Dataset:=GridRep.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} 
        GridRep.PreviewModal; {or Preview if you prefer}   finally 
        with Grid.DataSource.DataSet do 
        begin 
          GotoBook(BMark); 
          FreeBook(BMark); 
          EnableControls; 
        end; 
      end; 
    end; 
      

  5.   

    我正在做着DBGrid的预览组件,等我做好了给你一个
      

  6.   

    去下一個組件包就全部搞定了,devexpress的表格組件,www.inprises.com