⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frm_c_yhfkpas.pas

📁 是一个用delphi设计的考勤系统
💻 PAS
字号:
unit frm_c_yhfkpas;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ModalForm, Menus, StdCtrls, ExtCtrls, ComCtrls, ChangeImage,
   YLabelButton, UErrDisplay, ImgList, ModalForm1;

type
   Tfrm_c_yhfk = class(TMyModalForm1)
      GroupBox2: TGroupBox;
      TvJglist: TTreeView;
      stb: TStatusBar;
      GroupBox1: TGroupBox;
      lvYhxx: TListView;
      GroupBox4: TGroupBox;
      rb3: TRadioButton;
      edtyhbh: TEdit;
      rb4: TRadioButton;
      Label2: TLabel;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    cb1: TCheckBox;
    cb2: TCheckBox;
    cb4: TCheckBox;
    cb3: TCheckBox;
    cb6: TCheckBox;
    cb5: TCheckBox;
    cb8: TCheckBox;
    cb7: TCheckBox;
    DateTimePicker1: TDateTimePicker;
    edtSydate: TEdit;
    Button1: TButton;
    Button2: TButton;
      procedure FormCreate(Sender: TObject);
      procedure FormDestroy(Sender: TObject);
      procedure FormClose(Sender: TObject; var Action: TCloseAction);
      procedure DateTimePicker1Change(Sender: TObject);
      procedure rb3Click(Sender: TObject);
      procedure FormActivate(Sender: TObject);
      procedure TvJglistClick(Sender: TObject);
      procedure edtyhbhKeyDown(Sender: TObject; var Key: Word;
         Shift: TShiftState);
      procedure cb1Click(Sender: TObject);
      procedure lvYhxxClick(Sender: TObject);
      procedure lvYhxxColumnClick(Sender: TObject; Column: TListColumn);
      procedure FormShow(Sender: TObject);
      procedure edtsxfKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
   private
    { Private declarations }
      procedure InitValue; //初始化窗体数据
      function Fk(sYhbh: string): boolean;
   public
    { Public declarations }
   end;

var
   frm_c_yhfk: Tfrm_c_yhfk;
   iCardType: Byte;

implementation

uses DM_DataModal, UGeneralFunc, UPublicFunc, UGlobal, UTYhxx;

{$R *.dfm}

procedure Tfrm_c_yhfk.FormCreate(Sender: TObject);
begin
   inherited;
   LoadOrganTree(WindData.AdoConn, TvJglist, 4);
   with WindData.PublicQuery do
   begin
      close;
      sql.Clear;
      sql.Add('select * from zx_s_cardtype order by klbh');
      open;
      if not eof then
      begin
         cb1.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
      begin
         cb2.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
      begin
         cb3.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
      begin
         cb4.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
      begin
         cb5.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
      begin
         cb6.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
      begin
         cb7.Caption := fieldbyname('klmc').asstring;
         next;
      end;
      if not eof then
         cb8.Caption := fieldbyname('klmc').asstring;
      close;
   end;
end;

procedure Tfrm_c_yhfk.FormDestroy(Sender: TObject);
begin
   inherited;
   frm_c_yhfk := nil;
end;

procedure Tfrm_c_yhfk.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   inherited;
   Action := Cafree;
end;

procedure Tfrm_c_yhfk.InitValue;
begin


   edtSydate.Text := '';
   DateTimePicker1.DateTime := now;
   cb1.Checked := True;
   cb2.Checked := False;
   cb3.Checked := False;
   cb4.Checked := False;
   cb5.Checked := False;
   cb6.Checked := False;
   cb7.Checked := False;
   cb8.Checked := False;
   cb1Click(application);
   rb3.Checked := True;
   GroupBox1.Enabled := False;
   GroupBox2.Enabled := False;
   edtyhbh.Text := '';
   Label2.Enabled := True;
   edtyhbh.Enabled := True;
   edtyhbh.SetFocus;
   lvYhxx.Items.Clear;
   stb.Panels[3].Text := '0';
   stb.Panels[5].Text := '0';
   stb.Panels[1].Text := '选择用户后点击[发卡]  或  输入预发卡用户编号后按[ENTER]键'
end;

procedure Tfrm_c_yhfk.DateTimePicker1Change(Sender: TObject);
begin
   inherited;
   edtSydate.Text := datetostr(DateTimePicker1.Date);
end;

procedure Tfrm_c_yhfk.rb3Click(Sender: TObject);
begin
   inherited;
   GroupBox1.Enabled := rb4.Checked;
   GroupBox2.Enabled := rb4.Checked;
   Label2.Enabled := rb3.Checked;
   edtyhbh.Enabled := rb3.Checked;
   if edtyhbh.Enabled then
   begin
      edtyhbh.SetFocus;
      edtyhbh.SelectAll;
   end;
end;

procedure Tfrm_c_yhfk.FormActivate(Sender: TObject);
begin
   inherited;
 // InitValue;

end;

procedure Tfrm_c_yhfk.TvJglistClick(Sender: TObject);
var
   TempNode: TTreeNode;
   sBjbh: string;
   sNodeValue: string;
   tlItem: TListItem;
   sSql: string;
begin
   inherited;
   if TvJgList.Selected = nil then exit;
   TempNode := TvJgList.Selected;
   if TempNode.Level = 1 then
   begin
      sNodeValue := ptTreeNode(TVJglist.selected.data)^.NodeValue;
      if copy(sNodeValue, 1, 1) = 'd' then
      begin
         Lvyhxx.Clear;
         sBjbh := copy(sNodeValue, 2, length(sNodeValue) - 1);
         with WindData.PublicQuery do
         begin
            close;
            sql.Clear;
            sSql := 'select * from vzx_s_yhxx where bjbh=''' + sBjbh + ''' and sybz=0 order by yhbh';
            sql.Add(sSql);
            open;
            last;
            if RecordCount > 0 then
            begin
               stb.Panels[1].Text := '选择用户后点击[发卡]  或  输入预发卡用户编号后按[ENTER]键';
               Stb.Panels[3].Text := inttostr(RecordCount);
               Stb.Panels[5].Text := '0';
               first;
               while not eof do
               begin
                  tlItem := LvYhxx.Items.Add;
                  tlItem.Caption := fieldbyname('yhbh').asstring;
                  tlItem.SubItems.Add(fieldbyname('yhxm').asstring);
                  tlItem.SubItems.Add(fieldbyname('bjmc').asstring);
                  tLitem.Checked := True;
                  next;
               end;
               close;
            end
            else
            begin
               LvYhxx.Items.Clear;
               stb.Panels[1].Text := '无符合条件的记录';
               Stb.Panels[3].Text := '0';
               Stb.Panels[5].Text := '0';
            end;
            lvYhxxClick(application);
         end;
      end;
   end;
end;

procedure Tfrm_c_yhfk.edtyhbhKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
begin
   inherited;
   if key = 13 then Button1Click(application);
end;

procedure Tfrm_c_yhfk.cb1Click(Sender: TObject);
var
   sStr: string;
begin
   inherited;
   if cb1.Checked then
      sStr := '1'
   else
      sStr := '0';
   if cb2.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   if cb3.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   if cb4.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   if cb5.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   if cb6.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   if cb7.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   if cb8.Checked then
      sStr := sStr + '1'
   else
      sStr := sStr + '0';
   iCardType := BstrtoInt(sStr);
end;

function Tfrm_c_yhfk.Fk(sYhbh: string): boolean;
var
   yhxx: Tyhxx;
   sShowStr: string;
   dSxf: double;
begin
   result := False;
   yhxx := Tyhxx.create;
   try
      yhxx.GetYhxx(sYhbh); 
      if yhxx.RetVal = 0 then
      begin
         if yhxx.Sybz > 0 then
            stb.Panels[1].Text := '用户[' + yhxx.Yhxm + ']已发过卡'
         else
         begin
            sShowStr := '  用户编号:' + yhxx.Yhbh + #10#13 +
               '  用户姓名:' + yhxx.Yhxm + #10#13 +
               '  所属单位:' + yhxx.Bjmc + #10#13 +
               '将ID卡放在发器上后按[确认]键继续';
            if application.MessageBox(pchar(sShowStr), '用户发卡', mb_OkCancel + mb_iconquestion) = id_ok then
            begin
               yhxx.SyDate := strtodate(edtsydate.Text);
               yhxx.CardType := iCardType;
               yhxx.Cardpwd := sCsPassWord;
               stb.Panels[1].Text := '[' + inttostr(yhxx.RetVal) + ']' + yhxx.RetMsg;
               if yhxx.Retval = 0 then result := True;
            end
            else
               stb.Panels[1].Text := '用户[' + yhxx.Yhxm + ']取消发卡';
         end;
      end
      else
         stb.Panels[1].Text := yhxx.RetMsg;
   finally
      yhxx.Free;
   end;
 //  ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
end;

procedure Tfrm_c_yhfk.lvYhxxClick(Sender: TObject);
var
   i, iCount: integer;
begin
   inherited;
   iCount := 0;
   for i := 0 to lvyhxx.Items.Count - 1 do
   begin
      if lvyhxx.Items[i].Checked then
         inc(iCount);
   end;
   stb.Panels[3].Text := inttostr(iCount);
   stb.Panels[5].Text := '0';
end;

procedure Tfrm_c_yhfk.lvYhxxColumnClick(Sender: TObject;
   Column: TListColumn);
var
   i: integer;
begin
   inherited;
   if Column.Index = 0 then
   begin
      for i := 0 to lvyhxx.Items.Count - 1 do
         lvyhxx.Items[i].Checked := not lvyhxx.Items[i].Checked;
      lvYhxxClick(application);
   end;
end;

procedure Tfrm_c_yhfk.FormShow(Sender: TObject);
begin
   inherited;
   InitValue;
end;

procedure Tfrm_c_yhfk.edtsxfKeyPress(Sender: TObject; var Key: Char);
begin
   inherited;
   if key = char(vk_back) then exit;
   if ((length(Tedit(sender).text) - pos('.', Tedit(sender).text)) = 2) and (pos('.', Tedit(sender).text) <> 0) then
   begin
      key := #0;
      exit;
   end;
  //
   if (length(Tedit(sender).Text) = 0) or (pos('.', Tedit(sender).text) <> 0) then
   begin
      if not (key in ['0'..'9']) then key := #0
   end
   else
   begin
      if not (key in ['0'..'9', '.']) then key := #0;
   end;

end;

procedure Tfrm_c_yhfk.Button1Click(Sender: TObject);
var
   i: integer;
begin
   inherited;
   if trim(edtsydate.text) = '' then
   begin
      stb.Panels[1].Text := '请选择卡的使用期限';
      //ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
      exit;
   end;
   if rb3.Checked then
   begin
      if trim(edtyhbh.Text) = '' then
      begin
         stb.Panels[1].Text := '用户编号不能为空';
        // ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
         edtyhbh.SetFocus;
         exit;
      end;
      stb.Panels[3].Text := '1';
      stb.Panels[5].Text := '0';
      if Fk(edtyhbh.Text) then stb.Panels[5].Text := '1';
   end;
   if rb4.Checked then
   begin
      for i := 0 to lvyhxx.Items.Count - 1 do
      begin
         if not lvyhxx.Items[i].Checked then continue;
         if not FK(lvyhxx.Items[i].Caption) then
         begin
            if application.MessageBox('是否继续发卡?', '用户发卡', mb_YesNo + mb_iconquestion) = id_NO then
               break;
         end
         else
            stb.Panels[5].Text := inttostr(strtoint(stb.Panels[5].Text) + 1);
      end;
      if i = lvyhxx.Items.Count then
         stb.Panels[1].Text := '发卡结束'
      else
         stb.Panels[1].Text := '发卡被取消';
      lvyhxx.Items.Clear;
   end;
end;

procedure Tfrm_c_yhfk.Button2Click(Sender: TObject);
begin
  inherited;
 InitValue;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -