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 + -
显示快捷键?