📄 empinfset.pas
字号:
unit empinfset;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, DB, ADODB, ExtCtrls, ToolWin,
ComCtrls,Printers;
type
Temp_set_form = class(TForm)
StatusBar1: TStatusBar;
ToolBar1: TToolBar;
Panel1: TPanel;
DataSource1: TDataSource;
empinf_qold: TADOQuery;
BitBtn1: TBitBtn;
editemp: TADOQuery;
empinf_qoldFClientid: TIntegerField;
empinf_qoldFClientNo: TStringField;
empinf_qoldFclientName: TStringField;
empinf_qoldFRadioButton: TStringField;
empinf_qoldFVisible: TStringField;
Panel2: TPanel;
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
Splitter1: TSplitter;
Panel3: TPanel;
GroupBox2: TGroupBox;
DBGrid2: TDBGrid;
empinf_q: TADOTable;
empinfentry: TADOTable;
DataSource2: TDataSource;
editempentry: TADOQuery;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
empinfentryFTEntryId: TAutoIncField;
empinfentryFClientid: TIntegerField;
empinfentryFTranType: TIntegerField;
empinfentryFTranName: TStringField;
empinfentryFQuitCorpus: TStringField;
empinfentryFLossRatio: TBCDField;
empinfentryFWriteBillWin: TBCDField;
empinfentryFWriteBillLoss: TBCDField;
BitBtn6: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
private
{ Private declarations }
procedure EnableEmp(Sender:TObject);
procedure DisableEmp(Sender:TObject);
procedure EnableQuit(Sender:TObject);
procedure DisableQuit(Sender:TObject);
public
{ Public declarations }
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
end;
var
emp_set_form: Temp_set_form;
implementation
uses NumberManger;
{$R *.dfm}
procedure Temp_set_form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
procedure Temp_set_form.FormShow(Sender: TObject);
begin
empinf_q.Open;
empinfentry.Open;
end;
procedure Temp_set_form.BitBtn1Click(Sender: TObject);
begin
empinf_q.Close;
close;
end;
procedure Temp_set_form.EnableEmp(Sender:TObject);
begin
if application.MessageBox('是否启用该员工?','系统提示',mb_yesno+mb_iconquestion)=id_yes then
begin
editemp.Close;
editemp.SQL.Clear;
editemp.SQL.Add('update T_Client set FVisible=1 where FClientid='''+floattostr(empinf_q.Fields[0].value)+'''');
editemp.ExecSQL;
editemp.Close;
Application.MessageBox('员工已启用', '系统提示', 0 or MB_ICONINFORMATION);
empinf_q.Close;empinf_q.open;
end;
end;
procedure Temp_set_form.DisableEmp(Sender:TObject);
begin
if application.MessageBox('是否禁用该员工?','系统提示',mb_yesno+mb_iconquestion)=id_yes then
begin
editemp.Close;
editemp.SQL.Clear;
editemp.SQL.Add('update T_Client set FVisible=0 where FClientid='''+floattostr(empinf_q.Fields[0].value)+'''');
editemp.ExecSQL;
editemp.Close;
Application.MessageBox('员工已禁用', '系统提示', 0 or MB_ICONINFORMATION);
empinf_q.Close;empinf_q.open;
end;
end;
procedure Temp_set_form.EnableQuit(Sender:TObject);
var
editsql:string;
begin
if application.MessageBox('是否启用退本?','系统提示',mb_yesno+mb_iconquestion)=id_yes then
begin
editsql:='update T_ClientEntry set FQuitCorpus=1 where FClientid='''+floattostr(empinfentry.Fields[1].value)+'''';
editsql:=editsql+' and FTranType='''+floattostr(empinfentry.Fields[2].value)+'''';
editempentry.Close;
editempentry.SQL.Clear;
editempentry.SQL.Add(editsql);
editempentry.ExecSQL;
editempentry.Close;
Application.MessageBox('已启用退本', '系统提示', 0 or MB_ICONINFORMATION);
empinfentry.Close;empinfentry.open;
end;
end;
procedure Temp_set_form.DisableQuit(Sender:TObject);
var
editsql:string;
begin
if application.MessageBox('是否禁用退本?','系统提示',mb_yesno+mb_iconquestion)=id_yes then
begin
editsql:='update T_ClientEntry set FQuitCorpus=0 where FClientid='''+floattostr(empinfentry.Fields[1].value)+'''';
editsql:=editsql+' and FTranType='''+floattostr(empinfentry.Fields[2].value)+'''';
editempentry.Close;
editempentry.SQL.Clear;
editempentry.SQL.Add(editsql);
editempentry.ExecSQL;
editempentry.Close;
Application.MessageBox('已禁用退本', '系统提示', 0 or MB_ICONINFORMATION);
empinfentry.Close;empinfentry.open;
end;
end;
procedure Temp_set_form.DBGrid2MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if empinfentry.Fields[4].value='未退本' then
begin
BitBtn4.Enabled:=true;bitbtn5.Enabled :=false;
end
else
begin
BitBtn4.Enabled:=false;bitbtn5.Enabled :=true;
end;
end;
procedure Temp_set_form.BitBtn4Click(Sender: TObject);
begin
EnableQuit(Sender);
end;
procedure Temp_set_form.BitBtn5Click(Sender: TObject);
begin
DisableQuit(Sender);
end;
procedure Temp_set_form.DBGrid1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if empinf_q.Fields[4].value='未启用' then
begin
BitBtn2.Enabled:=true;bitbtn3.Enabled :=false;
end
else
begin
BitBtn2.Enabled:=false;bitbtn3.Enabled :=true;
end;
end;
procedure Temp_set_form.BitBtn2Click(Sender: TObject);
begin
EnableEmp(Sender);
end;
procedure Temp_set_form.BitBtn3Click(Sender: TObject);
begin
DisableEmp(Sender);
end;
Procedure Temp_set_form.OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam > 0 then
begin
if DBGrid1.Focused then
DataSource1.DataSet.Prior;
if DBGrid2.Focused then
DataSource2.DataSet.Prior;
end
else
begin
if DBGrid1.Focused then
DataSource1.DataSet.Next;
if DBGrid2.Focused then
DataSource2.DataSet.Next;
end;
Handled:= True;
end;
end;
procedure Temp_set_form.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel; // 截获鼠标滚动事件
end;
procedure Temp_set_form.BitBtn6Click(Sender: TObject);
const
LeftBlank=1;//定义页边距单位厘米
RightBlank=1;
TopBlank=2;
BottomBlank=3;
var
PointX,PointY,lx,ly:integer;
PointScale,PrintStep:integer;
s:string;
x,y,y1:integer;
i,j:integer;
print_ti:boolean;
comno:string;
begin
print_ti:=false;
//comno:='hl00';
//获取当前打印机的分辨率
PointX:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSX)/2.54);
PointY:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSY)/2.54);
//根据打印机和屏幕的分辨率计算出从屏幕转换到打印机的比例
PointScale:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSX)/Screen.PixelsPerInch+0.5);
j:=0;
//横向打印
for i:=0 to DBGrid1.FieldCount-1 do
begin
if DBGrid1.Columns[i].Visible then
begin
j:=j+1;
end;
end;
if j<10 then
printer.Orientation:=poPortrait
else
printer.Orientation:=poLandscape;
//打印的字体和大小
printer.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=14;
//根据字体的大小确定每行的高度
s:='有限公司';
PrintStep:=printer.canvas.TextHeight(s)+26;
//打印的起点位置
x:=PointX*LeftBlank;
y:=PointY*TopBlank;
ly:=PointY*TopBlank+100;
//DataSource1是DBGrid1所连接的数据源
if ((DataSource2.DataSet).Active=true) and ((DataSource2.DataSet).RecordCount>0) then
begin
printer.BeginDoc;
(DataSource2.DataSet).First;
while not (DataSource2.DataSet).Eof do
begin //打印DBGrid中的所有列
for i:=0 to DBGrid2.FieldCount-1 do
begin
if DBGrid2.Columns[i].Visible then
begin
//假如所要打印的列超出了打印范围,则忽略该列
if (x+DBGrid2.Columns.Items[i].Width*PointScale)<=(Printer.PageWidth-PointX*RightBlank)then
begin //画表格线
//**打印标题**//
if y=PointY*TopBlank then
begin
if not print_ti then
begin
printer.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=18;
comno:=' 员工回水表 ' ;
Printer.Canvas.TextOut(x+60,y-160,comno);
printer.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=12;
comno:=' 打印时间:'+DateToStr(Date);
printer.Canvas.TextOut(x,y-20,comno);
print_ti:=true;
y:=y+100;
end;
end;
printer.Canvas.Font.Color:=DBGrid2.Columns.Items[i].Font.Color;
Printer.Canvas.Rectangle(x,y-8,x+DBGrid2.Columns.Items[i].Width*PointScale,y+PrintStep);
if y=ly then
begin
printer.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=14;
Printer.Canvas.TextOut(x+8,y,DBGrid2.Columns[i].Title.Caption);
end
else
begin
printer.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=14;
Printer.Canvas.TextOut(x+8,y,DBGrid2.Fields[i].asString);
end;
end;
//计算下一列的横坐标
x:=x+DBGrid2.Columns.Items[i].Width*PointScale;
end;
end;
//if not (y=PointY*TopBlank) then (DataSource1.DataSet).next;
if not (y=ly) then (DataSource2.DataSet).next;
x:=PointX*LeftBlank;
y:=y+PrintStep; //换页
if (y+PrintStep)>(Printer.PageHeight-PointY*BottomBlank) then
begin
Printer.NewPage;
y:=PointY*TopBlank;
print_ti:=false;
end;
end;
printer.EndDoc;
Application.MessageBox('打印完成','打印',32);
(DataSource2.DataSet).First;
end ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -