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