📄 empworklist.pas
字号:
end;
procedure TEmpWorkList_Form.ClientButton10Click(Sender: TObject);
begin
ClientId:=10;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton11Click(Sender: TObject);
begin
ClientId:=11;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton12Click(Sender: TObject);
begin
ClientId:=12;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton13Click(Sender: TObject);
begin
ClientId:=13;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton14Click(Sender: TObject);
begin
ClientId:=14;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton15Click(Sender: TObject);
begin
ClientId:=15;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton16Click(Sender: TObject);
begin
ClientId:=16;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton17Click(Sender: TObject);
begin
ClientId:=17;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton18Click(Sender: TObject);
begin
ClientId:=18;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton19Click(Sender: TObject);
begin
ClientId:=19;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.ClientButton20Click(Sender: TObject);
begin
ClientId:=20;
first_bz:=true;
screport(Sender);
end;
procedure TEmpWorkList_Form.BitBtn1Click(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 ((DataSource1.DataSet).Active=true) and ((DataSource1.DataSet).RecordCount>0) then
begin
printer.BeginDoc;
(DataSource1.DataSet).First;
while not (DataSource1.DataSet).Eof do
begin //打印DBGrid中的所有列
for i:=0 to DBGrid1.FieldCount-1 do
begin
if DBGrid1.Columns[i].Visible then
begin
//假如所要打印的列超出了打印范围,则忽略该列
if (x+DBGrid1.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:=14;
comno:=' 打印时间:'+DateToStr(Date);
printer.Canvas.TextOut(x,y-20,comno);
print_ti:=true;
y:=y+100;
end;
end;
printer.Canvas.Font.Color:=DBGrid1.Columns.Items[i].Font.Color;
Printer.Canvas.Rectangle(x,y-8,x+DBGrid1.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,DBGrid1.Columns[i].Title.Caption);
end
else
begin
if (emplistsp.Fields[5].value='翻工') then
printer.Canvas.Font.Color:=clRed
else
printer.Canvas.Font.Color:=clBlue;
printer.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=14;
Printer.Canvas.TextOut(x+8,y,DBGrid1.Fields[i].asString);
end;
end;
//计算下一列的横坐标
x:=x+DBGrid1.Columns.Items[i].Width*PointScale;
end;
end;
//if not (y=PointY*TopBlank) then (DataSource1.DataSet).next;
if not (y=ly) then (DataSource1.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.Canvas.Font.Name:='宋体';
printer.canvas.Font.Size:=14;
comno:='共'+IntToStr(emplistsp.RecordCount)+'条记录';
Printer.Canvas.TextOut(x+60,y+60,comno);
printer.EndDoc;
Application.MessageBox('打印完成','打印',32);
(DataSource1.DataSet).First;
end ;
end;
procedure TEmpWorkList_Form.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel; // 截获鼠标滚动事件
end;
Procedure TEmpWorkList_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;
end
else
begin
if DBGrid1.Focused then
DataSource1.DataSet.Next;
end;
Handled:= True;
end;
end;
procedure TEmpWorkList_Form.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
var
i:integer;
begin
end;
procedure TEmpWorkList_Form.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with TMyDBGrid(Sender) do
begin
if (emplistsp.Fields[5].value='翻工') then
begin
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
(Sender as TDBGrid).Canvas.Font.Color:=clRed;
end
else
begin
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
(Sender as TDBGrid).Canvas.Font.Color:=clBlue;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -