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

📄 idn_main.pas

📁 基本功能:1. 从身份证号码中取信息              2. 判断身份证号码的有效性              3. 将15位号码转换成18位号码
💻 PAS
字号:
unit idn_main;

interface

uses
  ascidnum,
  ShellAPI,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TfIDNMain = class(TForm)
    leIDNum: TLabeledEdit;
    bCheck: TButton;
    bClose: TButton;
    gbInfo: TGroupBox;
    leRegionCode: TLabeledEdit;
    leRegionStr: TLabeledEdit;
    leBirthday: TLabeledEdit;
    leSex: TLabeledEdit;
    leChecksum: TLabeledEdit;
    leIDNumType: TLabeledEdit;
    Bevel1: TBevel;
    lRemark: TLabel;
    lAuthor: TLabel;
    lEmailMark: TLabel;
    lHomepageMark: TLabel;
    lEmail: TLabel;
    lHomepage: TLabel;
    procedure bCloseClick(Sender: TObject);
    procedure bCheckClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure lEmailMouseEnter(Sender: TObject);
    procedure lEmailMouseLeave(Sender: TObject);
    procedure lHomepageMouseEnter(Sender: TObject);
    procedure lHomepageMouseLeave(Sender: TObject);
    procedure lEmailClick(Sender: TObject);
    procedure lHomepageClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fIDNMain: TfIDNMain;

implementation

{$R *.dfm}

procedure TfIDNMain.bCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfIDNMain.bCheckClick(Sender: TObject);
var
  IDNumInfo : TIDNumInfo;
begin
  if GetIDNumInfo(leIDNum.Text, IDNumInfo) then
  begin
    case IDNumInfo.IDNumType of
      idnum15 : leIDNumType.Text := '15位号码';
      idnum18 : leIDNumType.Text := '18位号码';
    end;

    leRegionCode.Text := IDNumInfo.RegionCode;

    if GetRegionStr(IDNumInfo) then
      leRegionStr.Text := IDNumInfo.RegionStr
    else
      leRegionStr.Text := '未知';

    leBirthday.Text := FormatDateTime('yyyy"年"m"月"d"日"', IDNumInfo.BirthDay);

    case IDNumInfo.Sex of
      sexMale   : leSex.Text := '男';
      sexFemale : leSex.Text := '女';
      else
        leSex.Text := '未知';
    end;

    case IDNumInfo.ChecksumRst of
      csNoChecksum      : leChecksum.Text := '无校验';
      csChecksumError   : leChecksum.Text := '校验错误';
      csChecksumCorrect : leChecksum.Text := '校验正确';
    end;
  end else
  begin
    ShowMessage('输入的身份证号码不正确。');
    leIDNumType.Clear;
    leRegionCode.Clear;
    leRegionStr.Clear;
    leBirthday.Clear;
    leSex.Clear;
    leChecksum.Clear;
  end;
end;

procedure TfIDNMain.FormCreate(Sender: TObject);
begin
  if not LoadRegionDat('regioncode.dat') then
    ShowMessage('找不到区划定义数据文件。');
end;

procedure TfIDNMain.lEmailMouseEnter(Sender: TObject);
begin
  lEmail.Font.Color := clHighlightText;
  lEmail.Font.Style := [fsUnderline];
end;

procedure TfIDNMain.lEmailMouseLeave(Sender: TObject);
begin
  lEmail.Font.Color := clWindowText;
  lEmail.Font.Style := [];
end;

procedure TfIDNMain.lHomepageMouseEnter(Sender: TObject);
begin
  lHomepage.Font.Color := clHighlightText;
  lHomepage.Font.Style := [fsUnderline];
end;

procedure TfIDNMain.lHomepageMouseLeave(Sender: TObject);
begin
  lHomepage.Font.Color := clWindowText;
  lHomepage.Font.Style := [];
end;

procedure TfIDNMain.lEmailClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', PCHAR('mailto:' + lEmail.Caption), '', '', SW_SHOWNORMAL);
end;

procedure TfIDNMain.lHomepageClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', PCHAR(lHomepage.Caption), '', '', SW_SHOWNORMAL);  
end;

end.

⌨️ 快捷键说明

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