📄 checkprint.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 + -