⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 是 delphi6的函数库
💻 PAS
字号:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, Db, DBTables, Grids, DBGrids,printers, Buttons,
  ExtCtrls, ExtDlgs, DBCtrls, ADODB, PReport;

type
  TfrmMain = class(TForm)
    opbm1: TOpenPictureDialog;
    SaveDialog1: TSaveDialog;
    ADOConnection1: TADOConnection;
    QMaster: TADOQuery;
    QDetail: TADOQuery;
    dsMaster: TDataSource;
    dsDetail: TDataSource;
    DBGrid1: TDBGrid;
    DBGrid4: TDBGrid;
    DBNavigator1: TDBNavigator;
    PRToExcel1: TPRToExcel;
    PRExcute1: TPRExcute;
    PRClass1: TPRClass;
    QMasterOrderNo: TFloatField;
    QMasterCustNo: TFloatField;
    QMasterSaleDate: TDateTimeField;
    QMasterShipDate: TDateTimeField;
    QMasterEmpNo: TIntegerField;
    QMasterShipToContact: TWideStringField;
    QMasterShipToAddr1: TWideStringField;
    QMasterShipToAddr2: TWideStringField;
    QMasterShipToCity: TWideStringField;
    QDetailOrderNo: TFloatField;
    QDetailItemNo: TFloatField;
    QDetailPartNo: TFloatField;
    QDetailQty: TIntegerField;
    QDetailDiscount: TFloatField;
    Button5: TButton;
    Button3: TButton;
    Button6: TButton;
    Button4: TButton;
    SpeedButton3: TSpeedButton;
    Memo1: TMemo;
    Button1: TButton;
    QMasterfReport: TBlobField;
    Button2: TButton;
    procedure Button4Click(Sender: TObject);
    //procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;


  implementation

uses Data;

{$R *.DFM}


procedure TfrmMain.Button4Click(Sender: TObject);
begin
close;
end;


procedure TfrmMain.Button5Click(Sender: TObject);
begin
  PRExcute1.ReportFile:=ExtractFilepath(application.ExeName)+'prdemo.prt';
  PRExcute1.PrintPreview(true); //true参数表示预览不显示非打印表格线
end;

procedure TfrmMain.Button3Click(Sender: TObject);
begin
  PRExcute1.ReportFile:=ExtractFilepath(application.ExeName)+'prdemo.prt';//
  PRExcute1.Print(true); //false 代表选择打印页,true则直接打印
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  ADOConnection1.ConnectionString :=
  'Data Source=' + ExtractFilePath(Application.ExeName) + 'dbdemos.mdb;Jet OLEDB:Database Password=';   //access数据库

  if not QMaster.Active then QMaster.open;
  if not QDetail.Active then QDetail.open;
end;

procedure TfrmMain.Button6Click(Sender: TObject);
begin
if SaveDialog1.Execute then
  PRToExcel1.SaveExclFile(SaveDialog1.FileName,true);//第二个参数决定是否将字段名作为表头.
end;

procedure TfrmMain.SpeedButton3Click(Sender: TObject);
var
  j: integer;
  strFileDir: string;
  CellFont: TLogFont;
  cf: TFont;
begin
  strFileDir := ExtractFileDir(Application.ExeName);
  with PRClass1 do
  begin
    SetWndSize(1058, 748); // 设置纸张大小

    NewTable(dbgrid1.Columns.Count, 4); // 创建表格
    Dataline:=0; //明细数据行数 0为自动
    
    SetCellSFocus(0, 0, 0, dbgrid1.Columns.Count - 1); //选取0行
    CombineCell; //合并0行单元格
    setLineHegit(0,40); //设定0行的高度
    SetCellLines(false, false, false, false, 1, 1, 1, 1); //去掉表格线
    SetCellText(0, 0, '订单列表'); //填0行的内容
    SetCellAlign(1, 1); //将选中行的文字居中
    //SetCellsHeight(40);
    cf := Tfont.Create;
    cf.Name := '楷体_GB2312';
    cf.Size := 22;
    cf.style := cf.style + [fsBold];

    GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
    SetCellFont(CellFont); //设定字体

    for j := 0 to dbgrid1.Columns.Count - 1 do //填字段名及明细表字段
    begin
      SetCellText(1, j, dbgrid1.Columns[j].FieldName);
      SetCellDef(1, j, dbgrid1.Columns[j].FieldName);
      RemoveAllSelectedCell;
      SetCellFocus(1, j); //
      SetCellsWidth(dbgrid1.Columns[j].Width);//列宽设置

      SetCellText(2, j, '细表.' + dbgrid1.Columns[j].FieldName);
      SetCellDef(2, j, dbgrid1.Columns[j].FieldName);
      RemoveAllSelectedCell;
      SetCellFocus(2, j); //
      SetCellsWidth(dbgrid1.Columns[j].Width);
      
      if dbgrid1.DataSource.DataSet.FieldByName(dbgrid1.Columns[j].FieldName) is tnumericField then
      begin
        SetCellAlign(2, 1);
        SetCellDispFormt('0,.00');
      end
      else
        SetCellAlign(3, 1);

    end;
    setLineHegit(1, 50); //设定第2行的高度

    SetCellAlign(1, 1); //将选中行的文字居中

    cf.Name := '仿宋_GB2312';
    cf.Size := 16;
    cf.Style := [];
    GetObject(cf.Handle, SizeOf(CellFont), @CellFont);

    SetCellFont(CellFont);
    SetCellColor(clRed, clWhite); //白底红字

    RemoveAllSelectedCell;
    SetCellSFocus(3, 0, 3, dbgrid1.Columns.Count - 1); //选择最后一行
    SetCellLines(false, false, false, false, 1, 1, 1, 1); //去掉表格线
    CombineCell; //合并单元格
    SetCellText(3, 0, '[第?页]'); //本行内容为"第?/?页"样式的页码
    SetCellDef(3, 0, '[第?页]');
    SetCellAlign(1, 1); //居中

    RemoveAllSelectedCell; //取销选中单元格
    SetCellSFocus(1, 0, 1, dbgrid1.Columns.Count - 1); //选择第1行进行操作
    SetCellFocus(1, 0); //选择第1行进行操作
    cf.Name := 'MS Serif';
    cf.Size := 10;
    cf.Style := [];
    GetObject(cf.Handle, SizeOf(CellFont), @CellFont);
    SetCellFont(CellFont);

    SaveToFile(strFileDir + '\' + 'test.prt');
    ResetContent;
    cf.Free;
  end;
  //预览
  QMaster.DisableControls;
  PRExcute1.ReportFile := strFileDir + '\' + 'test.prt';
  PRExcute1.Datasources.Clear;
  PRExcute1.Datasources.Add('细表:QMaster'); 
  PRExcute1.PrintPreview(true); //true参数表示预览不显示非打印表格线
  QMaster.EnableControls;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  QMaster.DisableControls;
  PRExcute1.PreviewDbGrid('自动报表','订单列表');
  QMaster.EnableControls;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -