print.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 558 行 · 第 1/2 页
PAS
558 行
unit print;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, DBCGrids, Buttons, ComCtrls, ToolWin, Grids,
wwDataInspector, DBGrids, RXDBCtrl, Db, ADODB, Wwdbigrd, Wwdbgrid,
ExtCtrls, RxCombos,Quickrpt, QRCtrls, Printers, wwdblook;
type
TFormprint = class(TForm)
ToolBar1: TToolBar;
quit: TToolButton;
ADOQuery1: TADOQuery;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton3: TSpeedButton;
GroupBox1: TGroupBox;
ListBox1: TListBox;
GroupBox2: TGroupBox;
wwDBGrid1: TwwDBGrid;
ToolButton3: TToolButton;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
Label1: TLabel;
Edit1: TEdit;
Panel2: TPanel;
CheckBox1: TCheckBox;
CheckBox3: TCheckBox;
CheckBox2: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
ColorComboBox1: TColorComboBox;
FontComboBox1: TFontComboBox;
Combofontsize: TComboBox;
Label3: TLabel;
Label2: TLabel;
Edit2: TEdit;
RadioGroup1: TRadioGroup;
ADODataSet1: TADODataSet;
combobox1: TwwDBLookupCombo;
ADODataSet2: TADODataSet;
ADODataSet3: TADODataSet;
combobox2: TwwDBLookupCombo;
ADODataSet3salname: TStringField;
ADODataSet3wight: TIntegerField;
ADODataSet3formname: TStringField;
ADODataSet3salenglish: TStringField;
ADODataSet2salname: TStringField;
ADODataSet2wight: TIntegerField;
ADODataSet2formname: TStringField;
ADODataSet2salenglish: TStringField;
procedure quitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ListBox1DblClick(Sender: TObject);
private
{ Private declarations }
public
formname:string;
field1,field2,field11,field21:string;
{ Public declarations }
end;
var
Formprint: TFormprint;
implementation
uses main, datamol, rep1;
{$R *.DFM}
procedure TFormprint.quitClick(Sender: TObject);
begin
close;
end;
procedure TFormprint.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adoquery1.Close;
adodataset1.close;
adodataset2.close;
adodataset3.close;
action:=cafree;
formprint:=nil;
end;
procedure TFormprint.FormCreate(Sender: TObject);
begin
edit2.Text:=formmain.labe;
checkbox1.Checked:=true;
adodataset2.Close;
adodataset2.CommandText:='select * From salprint where formname='''+formmain.form+'''';
adodataset2.Open;
adodataset3.Close;
adodataset3.CommandText:='select * From salprint where formname='''+formmain.form+'''';
adodataset3.open;
with datamod do
begin
ADOsalnameset.close;
ADOsalnameset.Open;
adosalprint.Close;
adosalprint.CommandText:='select * From salprint where formname='''+formmain.form+'''';
adosalprint.Open;
listbox1.Clear;
while not adosalnameset.eof do
begin
if trim(ADOsalnameset.fieldbyname('changechinename').asstring)<>'' then
listbox1.items.Add(ADOsalnameset.fieldbyname('changechinename').asstring);
adosalnameset.Next;
end;
end;
end;
procedure TFormprint.SpeedButton1Click(Sender: TObject);
var i:integer;
begin
if trim(edit1.text)='' then
begin
application.MessageBox('请指定宽度','提示',mb_ok);
exit;
end
else
begin
for i:=0 to listbox1.items.count-1 do
begin
if listbox1.Selected[i] then
begin
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('select * from salprint where salname='''+listbox1.items[i]+''' and formname='''+formmain.form+'''');
adoquery1.open;
if adoquery1.eof then
begin
try
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Text:='select name from syssalfields where changechinename='''+trim(listbox1.items[i])+'''';
adoquery1.Open;
datamod.adosalprint.insert;
datamod.adosalprint.fieldbyname('salname').asstring:=trim(listbox1.items[i]);
datamod.ADOsalprint.fieldbyname('formname').asstring:=formmain.form;
datamod.adosalprint.fieldbyname('salenglish').asstring:=adoquery1.fieldbyname('name').asstring;
datamod.adosalprint.FieldByName('wight').asinteger:=strtoint(edit1.text);
datamod.ADOsalprint.Post;
except
application.MessageBox('出现相同的字段名!','提示',mb_ok);
end;
end;
end;
end;
end;
end;
procedure TFormprint.SpeedButton3Click(Sender: TObject);
begin
datamod.adosalprint.Delete;
end;
procedure TFormprint.SpeedButton2Click(Sender: TObject);
var i:integer;
begin
if trim(edit1.text)='' then
begin
application.MessageBox('请指定宽度','提示',mb_ok);
exit;
end
else
begin
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('delete salprint where formname='''+formmain.form+'''');
adoquery1.ExecSQL;
for i:=0 to listbox1.items.count-1 do
begin
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Add('select * from salprint where salname='''+listbox1.items[i]+''' and formname='''+formmain.form+'''');
adoquery1.open;
if adoquery1.eof then
begin
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.Text:='select name from syssalfields where changechinename='''+trim(listbox1.items[i])+'''';
adoquery1.Open;
datamod.adosalprint.insert;
datamod.adosalprint.fieldbyname('salname').asstring:=trim(listbox1.items[i]);
datamod.ADOsalprint.fieldbyname('formname').asstring:=formmain.form;
datamod.adosalprint.fieldbyname('salenglish').asstring:=adoquery1.fieldbyname('name').asstring;
datamod.adosalprint.FieldByName('wight').asinteger:=strtoint(edit1.text);
datamod.ADOsalprint.Post;
end;
end;
end;
end;
procedure TFormprint.SpeedButton4Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='delete salprint where formname='''+formmain.form+'''';
adoquery1.ExecSQL;
datamod.ADOsalprint.close;
datamod.adosalprint.CommandText:='select * from salprint where formname='''+formmain.form+'''';
datamod.adosalprint.open;
end;
procedure TFormprint.ToolButton3Click(Sender: TObject);
var i:integer;
QRLabel: Array of TQRLabel;
QRtext: Array of TQRDBText;
qrshape:array of tqrshape;
Qruser,Qrtime:TQRLabel;
qleft,qleft1,qtop:integer;
j:integer;
fieldname:string;
begin
field1:=''; field11:='';
field2:=''; field21:='';
if checkbox2.Checked then
begin
field1:=adodataset2.fieldbyname('salname').asstring;
field11:=adodataset2.fieldbyname('salenglish').asstring;
end;
if checkbox3.Checked then
begin
field2:=adodataset3.fieldbyname('salname').asstring;
field21:=adodataset3.fieldbyname('salenglish').asstring;
end;
if (datamod.ADOsalprint.State=dsedit) or (datamod.ADOsalprint.State=dsinsert) then
datamod.ADOsalprint.Post;
datamod.ADOsalprint.DisableControls;
if datamod.ADOsalprint.RecordCount=0 then
begin
application.messagebox('请至少选择一个项目去打印。','警告',mb_ok+mb_iconwarning);
exit;
end;
try
userdefinereport:=tuserdefinereport.Create(self);
userdefinereport.dataset:=Adodataset1;
j:=datamod.ADOsalprint.RecordCount;
setlength(qrlabel,j);
setlength(qrtext,j);
if radiogroup1.ItemIndex=1 then //横向
userdefinereport.Page.Orientation:=poLandscape
else
userdefinereport.page.orientation:=poPortrait;//纵向
//qleft:=userdefinereport.Width div j;
qleft:=5;
qleft:=5;
qtop:=10;
i:=0;
fieldname:='';
datamod.ADOsalprint.First;
while not datamod.adosalprint.Eof do
begin
if fieldname='' then
fieldname:='a.'+datamod.ADOsalprint.fieldbyname('salenglish').asstring
else
fieldname:=fieldname+','+'a.'+datamod.ADOsalprint.fieldbyname('salenglish').asstring;
datamod.ADOsalprint.Next;
end;
datamod.ADOsalprint.First;
adodataset1.Close;
adodataset1.CommandText:='select '+fieldname+' from sal21010 a left join per24010 b on a.workno=b.workno where '+formmain.sql+' order by a.deptname,a.workno';
adodataset1.Open;
if formmain.Form='salaryreport' then
begin
setlength(qrshape,2*j+6);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?