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

📄 checkprint.pas

📁 物流管理系统是一个典型的数据库应用程序
💻 PAS
字号:

unit checkprint;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frame, DB, ADODB, RpRender, RpRenderCanvas, RpRenderPreview,
  RpBase, RpFiler, RpCon, RpConDS, RpDefine, RpRave, StdCtrls,
  RpRenderPrinter, ExtCtrls, Grids, DBGrids, Buttons, ComCtrls;

type
  Tf_checkprint = class(Tf_frame)
    Query1: TADOQuery;
    Project: TRvProject;
    RvDataSetConnection1: TRvDataSetConnection;
    Label1: TLabel;
    Grid: TDBGrid;
    Panel2: TPanel;
    storagefield: TComboBox;
    Label3: TLabel;
    storagevalue: TComboBox;
    Query: TBitBtn;
    Print: TBitBtn;
    storagecon: TCheckBox;
    storecon: TCheckBox;
    storevalue: TComboBox;
    RegSource: TDataSource;
    procedure FormShow(Sender: TObject);
    procedure QueryClick(Sender: TObject);
    procedure PrintClick(Sender: TObject);
  private
    { Private declarations }
  public
    Procedure SetPageSize(x,y: Integer);//设置纸张大小,单位0.1mm(毫米)
    { Public declarations }
  end;

var
  f_checkprint: Tf_checkprint;

implementation
  uses data,printers;
{$R *.dfm}
//处理窗体显示时的事件
procedure Tf_checkprint.FormShow(Sender: TObject);
begin
  inherited;
  Query1.Connection := t_data.Connection1;
  With Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select storagename from tb_storageinfo ');
    Open;
  end;
  if Query1.RecordCount>0 then
  begin
    while not Query1.Eof do  //向组合框中添加库存名称
    begin
      Storagevalue.Items.Add(Trim(Query1.Fields[0].Value));
      Query1.Next;
    end;
  end;
  With Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select storename from tb_storeinfo');
    Open;
  end;
  if Query1.RecordCount>0 then
  begin
    while not Query1.Eof do //向组合框中添加物资名称
    begin
      StoreValue.Items.Add(Trim(Query1.Fields[0].Value));
      Query1.Next;
    end;
  end;
  StorageField.ItemIndex := 0;
  StorageValue.ItemIndex := 0;
  StoreValue.ItemIndex := 0;
end;
//处理查询按钮的单击事件
procedure Tf_checkprint.QueryClick(Sender: TObject);
begin
  inherited;
  if storagecon.Checked or Storecon.Checked then //判断设置的查询条件
  begin
    if storagecon.Checked and not storecon.Checked then //只按仓库名称查询
    begin
      with Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from tb_comstorage where storagename = :storagename ');
        Parameters.ParamByName('storagename').Value := Trim(Storagevalue.Text);
        Open;
      end;
      if Query1.RecordCount>0 then
      begin
        Print.Enabled := True;
        Regsource.DataSet := Query1;
      end
      else
      begin
        Print.Enabled := False;
        Regsource.DataSet := Nil;
      end
    end
    else if storecon.Checked and  not Storagecon.Checked then //只按物资名称查询
    begin
      with Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from tb_comstorage where storename = :storename ');
        Parameters.ParamByName('storename').Value := Trim(Storevalue.Text);
        Open;
      end;
      if Query1.RecordCount>0 then
      begin
        Print.Enabled := True;
        Regsource.DataSet := Query1;
      end
      else
      begin
        Regsource.DataSet := Nil;
        Print.Enabled := False;
      end;
    end
    else //即按仓库名称又按物资查询
    begin
      with Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from tb_comstorage where storagename = :storagename and storename = :storename');
        Parameters.ParamByName('storagename').Value := Trim(Storagevalue.Text);
        Parameters.ParamByName('storename').Value := Trim(Storevalue.Text);
        Open;
      end;
      if Query1.RecordCount>0 then
      begin
        Regsource.DataSet := Query1 ;
        Print.Enabled := True;
      end
      else
      begin
        Regsource.DataSet := Nil;
        Print.Enabled := False;
      end;
    end;
  end
  else
    Application.MessageBox('请设置查询条件.','提示',64);
end;
//处理打印按钮的单击事件
procedure Tf_checkprint.PrintClick(Sender: TObject);
begin
  inherited;
  //判断报表文件是否存在
  if FileExists(Trim(ExtractFilePath(Application.ExeName)+'Report\CheckPrint.rav')) then
  begin
    Project.ProjectFile := Trim(ExtractFilePath(Application.ExeName))+'Report\CheckPrint.rav';
    Project.Execute;
  end
  else
    Application.MessageBox('报表文件不存在,不能实现打印.','提示',64);
end;

procedure Tf_checkprint.SetPageSize(x, y: Integer);
var
  Device: array[0..255] of char;
  Driver: array[0..255] of char;
  Port: array[0..255] of char;
  hDMode: THandle;
  PDMode: PDEVMODE;
begin
  Printer.PrinterIndex := Printer.PrinterIndex; //设置当前打印机
  Printer.GetPrinter(Device, Driver, Port, hDMode);//取得当前打印机信息,
  if hDMode <> 0 then
  begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      if (x = 0) or (y = 0) then
      begin
        pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
        pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
      end
      else
      begin
        pDMode^.dmFields := pDMode^.dmFields or
          DM_PAPERSIZE or
          DM_PAPERWIDTH or
          DM_PAPERLENGTH;
        pDMode^.dmPaperSize := DMPAPER_USER;
        pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter};
        pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter};
      end;
      {设定纸张来源}
      pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
      pDMode^.dmDefaultSource := DMBIN_MANUAL;
      GlobalUnlock(hDMode);
    end;
  end;
end;

end.



⌨️ 快捷键说明

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