printsel.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 261 行
PAS
261 行
unit printsel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, ppDB, ppDBPipe, ppDBBDE, ppBands, ppClass, ppPrnabl, ppCtrls,
ppCache, ppComm, ppRelatv, ppProd, ppReport, StdCtrls, Buttons, ExtCtrls,
CheckLst, Quickrpt, QRCtrls, Printers, RxCombos;
type
TFormprintsel = class(TForm)
CheckListBox1: TCheckListBox;
Panel2: TPanel;
Label3: TLabel;
Edit1: TEdit;
CheckBox1: TCheckBox;
ComboBox2: TComboBox;
CheckBox3: TCheckBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
Panel1: TPanel;
Panel3: TPanel;
Label1: TLabel;
Label4: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
CheckBox2: TCheckBox;
FontComboBox1: TFontComboBox;
ColorComboBox1: TColorComboBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
Combofontsize: TComboBox;
procedure BitBtn1Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckListBox1ClickCheck(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function getindex(name:string):integer;
end;
var
Formprintsel: TForm;
dataset:Tadodataset;
where,select,og,command:string;
field:Array of string;
implementation
uses datamol,publicfunction,main, rep1, canfind;
{$R *.DFM}
procedure TFormprintsel.BitBtn1Click(Sender: TObject);
var i:integer;
QRLabel: Array of TQRLabel;
QRtext: Array of TQRDBText;
Qruser,Qrtime:TQRLabel;
qleft,qtop:integer;
p: array [0..100] of integer;
j:integer;
begin
j:=0;
for i:=0 to CheckListBox1.Items.Count-1 do
begin
if CheckListBox1.checked[i] then
begin
p[j]:=i;
J:=j+1;
end;
end;
if j=0 then
begin
application.messagebox('请至少选择一个项目去打印。','警告',mb_ok+mb_iconwarning);
exit;
end;
try
userdefinereport:=tuserdefinereport.Create(self);
userdefinereport.dataset:=Adodataset1;
setlength(qrlabel,j);
setlength(qrtext,j);
if j>8 then
userdefinereport.Page.Orientation:=poLandscape;
qleft:=userdefinereport.Width div j;
qtop:=10;
for i:=0 to j-1 do
begin
//*****************//
qrLabel[i]:=TQRLabel.Create(self);
qrLabel[i].parent:=userdefinereport.QRBand3;
qrLabel[i].Caption:=CheckListBox1.Items[p[i]];
if checkbox4.checked then
begin
qrlabel[i].Font.Name:=fontcombobox1.FontName;
qrlabel[i].Font.Size:=strtoint(combofontsize.text);
end;
if checkbox5.checked then
qrLabel[i].Font.Color:=ColorComboBox1.ColorValue;
qrLabel[i].Top:=qtop;
qrLabel[i].Left:=i*qleft;
qrLabel[i].Show;
//******************//
qrtext[i]:=TQrDbText.Create(self);
qrtext[i].Parent:=userdefinereport.QRBand2;
if checkbox4.checked then
begin
qrtext[i].Font.Name:=fontcombobox1.FontName;
qrtext[i].Font.Size:=strtoint(Combofontsize.text);
end;
if checkbox5.checked then
qrtext[i].Font.Color:=ColorComboBox1.ColorValue;
qrtext[i].Top:=qtop;
qrtext[i].Left:=i*qleft;
qrtext[i].DataSet:=adodataset1;
qrtext[i].DataField:=adodataset1.Fields[p[i]].fullname;
if (adodataset1.FieldDefs.Items[p[i]].DataType=ftSmallInt) or (adodataset1.FieldDefs.Items[p[i]].DataType=ftInteger) or
(adodataset1.FieldDefs.Items[p[i]].DataType=ftWord) or (adodataset1.FieldDefs.Items[p[i]].DataType=ftBCD) then
qrtext[i].Alignment:=taLeftJustify;
qrtext[i].Show;
end;
qruser:=TQRLabel.create(self);
qruser.parent:=userdefinereport.QRBand5;
qruser.caption:='制表人:'+pubworkname;
qruser.Font.color:=clpurple;
qruser.Top:=10;
qruser.left:=50;
qruser.show;
qrtime:=TQRLabel.create(self);
qrtime.parent:=userdefinereport.QRBand5;
qrtime.caption:='制表日期:'+formatdatetime('yyyy/mm/dd hh:mm:ss',now);
qrtime.font.color:=clpurple;
qrtime.top:=10;
qrtime.left:=userdefinereport.Width-350;
qrtime.show;
userdefinereport.Preview;
finally
userdefinereport.free;
end;
end;
procedure TFormprintsel.RadioButton1Click(Sender: TObject);
var
i:integer;
begin
if (sender as TRadiobutton).tag=1 then
for i:=0 to checklistbox1.items.count-1 do
checklistbox1.checked[i]:=true
else
for i:=0 to checklistbox1.items.count-1 do
checklistbox1.checked[i]:=false;
end;
procedure TFormprintsel.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TFormprintsel.FormClose(Sender: TObject; var Action: TCloseAction);
begin
formprintsel:=nil;
action:=cafree;
end;
procedure TFormprintsel.FormCreate(Sender: TObject);
var
i:integer;
begin
cap:=false; ucap:='';
adodataset1.close;
adodataset1.CommandText:=command;
adodataset1.open;
checklistbox1.Items.Clear;
combobox2.items.clear;
with formcanfind.DBGrid1 do
begin
Setlength(field,Columns.count);
label1.caption:='有'+inttostr(Columns.Count)+'个栏位可以列印';
label1.update;
for i:=0 to Columns.Count-1 do
begin
field[i]:=Columns[i].FieldName;
checklistbox1.Items.Add(Columns[i].Title.Caption);
checklistbox1.Checked[i]:=true;
if (Columns[i].Field.DataType=ftSmallInt) or (Columns[i].Field.DataType=ftInteger) or
(Columns[i].Field.DataType=ftWord) or (Columns[i].Field.DataType=ftBCD) then
begin
combobox2.items.Add(Columns[i].Title.Caption);
end;
end;
checklistbox1.OnClickCheck(self);
end;
radiobutton1.checked:=true;
combobox1.items.clear;
combobox1.items:=combobox2.items;
end;
procedure TFormprintsel.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked then
cap:=true
else
cap:=false
end;
procedure TFormprintsel.CheckListBox1ClickCheck(Sender: TObject);
var i,k:integer;
begin
k:=0;
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.checked[i] then
k:=k+1;
label4.caption:='已选'+inttostr(k)+'个栏位要列印';
label4.update;
end;
procedure TFormprintsel.Edit1Change(Sender: TObject);
begin
ucap:=edit1.text;
end;
procedure TFormprintsel.CheckBox3Click(Sender: TObject);
begin
if checkbox3.checked then
total:=true
else
total:=false;
end;
procedure TFormprintsel.ComboBox2Change(Sender: TObject);
begin
utotal:=combobox2.text;
index:=field[getindex(utotal)];
end;
function TFormprintsel.getindex(name:string):integer;
var i:integer;
begin
result:=-1;
for i:=0 to checklistbox1.items.count-1 do
begin
if checklistbox1.items[i]=name then
begin
result:=i;
break;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?