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

📄 f_tools.pas

📁 用Delphi 开发的一个 户籍管理系统
💻 PAS
字号:
unit f_tools;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzButton, ExtCtrls, RzPanel, RzTabs, StdCtrls, Mask, RzEdit,
  ActnList, Grids, DBGrids, RzDBGrid, DB;

type
  Tfm_tool = class(TForm)
    tab_tools: TRzPageControl;
    tbs_mobile: TRzTabSheet;
    tbs_IDCard: TRzTabSheet;
    tbs_postcode: TRzTabSheet;
    actlst_tools: TActionList;
    act_mobile: TAction;
    act_IDCard: TAction;
    act_postcode: TAction;
    act_areacode: TAction;
    act_province: TAction;
    act_city: TAction;
    pnl_mobile: TPanel;
    btn_mobile: TRzBitBtn;
    Panel1: TPanel;
    btn_IDCard: TRzBitBtn;
    Panel2: TPanel;
    btn_postcode: TRzBitBtn;
    btn_province: TRzBitBtn;
    btn_areacode: TRzBitBtn;
    btn_city: TRzBitBtn;
    mmo_mobile: TRzMemo;
    mmo_IDCard: TRzMemo;
    grd_postcode: TRzDBGrid;
    ds_postcode: TDataSource;
    edt_postcode: TRzEdit;
    edt_areacode: TRzEdit;
    edt_province: TRzEdit;
    edt_city: TRzEdit;
    edt_mobile: TRzEdit;
    edt_IDCard: TRzEdit;
    btn_exit: TRzBitBtn;
    act_exit: TAction;
    btn_exit1: TRzBitBtn;
    btn_exit2: TRzBitBtn;
    procedure act_postcodeExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure act_areacodeExecute(Sender: TObject);
    procedure act_provinceExecute(Sender: TObject);
    procedure act_cityExecute(Sender: TObject);
    procedure act_mobileExecute(Sender: TObject);
    procedure act_IDCardExecute(Sender: TObject);
    procedure act_exitExecute(Sender: TObject);
    procedure edt_mobileKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_IDCardKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_postcodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_provinceKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_areacodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_cityKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fm_tool: Tfm_tool;

implementation

uses F_RDB, f_IDCard;

{$R *.dfm}

procedure Tfm_tool.act_postcodeExecute(Sender: TObject);
var
  sql: string;
begin
  if Length(Trim(edt_postcode.Text)) = 0 then
    sql := 'select * from data'
  else
    sql := 'select * from data where 邮编 like''' +
      Trim(edt_postcode.Text) + '''';
  if RDB.dst_postalcode.Active then
    RDB.dst_postalcode.Active := False;
  RDB.dst_postalcode.CommandText := sql;
  RDB.dst_postalcode.Active := True;
end;

procedure Tfm_tool.FormCreate(Sender: TObject);
begin
  rdb.dst_postalcode.Active := True;
end;

procedure Tfm_tool.act_areacodeExecute(Sender: TObject);
var
  sql: string;
begin
  if Length(Trim(edt_areacode.Text)) = 0 then
    sql := 'select * from data'
  else
    sql := 'select * from data where 区号 like''' +
      Trim(edt_areacode.Text) + '''';
  if RDB.dst_postalcode.Active then
    RDB.dst_postalcode.Active := False;
  RDB.dst_postalcode.CommandText := sql;
  RDB.dst_postalcode.Active := True;
end;

procedure Tfm_tool.act_provinceExecute(Sender: TObject);
var
  sql: string;
begin
  if Length(Trim(edt_province.Text)) = 0 then
    sql := 'select * from data'
  else
    sql := 'select * from data where 省名 like''' +
      Trim(edt_province.Text) + '''';
  if RDB.dst_postalcode.Active then
    RDB.dst_postalcode.Active := False;
  RDB.dst_postalcode.CommandText := sql;
  RDB.dst_postalcode.Active := True;
end;

procedure Tfm_tool.act_cityExecute(Sender: TObject);
var
  sql: string;
begin
  if Length(Trim(edt_city.Text)) = 0 then
    sql := 'select * from data'
  else
    sql := 'select * from data where 县市名 like''' +
      Trim(edt_city.Text) + '''';
  if RDB.dst_postalcode.Active then
    RDB.dst_postalcode.Active := False;
  RDB.dst_postalcode.CommandText := sql;
  RDB.dst_postalcode.Active := True;
end;

procedure Tfm_tool.act_mobileExecute(Sender: TObject);
var
  mobile: string;
begin
  mobile := Trim(edt_mobile.Text);
  if Length(mobile) <7 then
  begin
     Application.MessageBox('请输入手机号的至少前7位数字!', '提示', MB_OK + 
       MB_ICONINFORMATION);
    Exit;
  end;
  mobile := Copy(mobile, 1, 7);
  mobile := 'select * from mobile where 号码B <= ' + mobile
    + ' and 号码E >=' + mobile + '';
  if RDB.dst_mobile.Active then
    RDB.dst_mobile.Active := False;
  RDB.dst_mobile.CommandText := mobile;
  RDB.dst_mobile.Active := True;
  RDB.dst_mobile.First;
  mmo_mobile.Clear;
  while not RDB.dst_mobile.Eof do
  begin
    mmo_mobile.Lines.Add('地区:' +
      RDB.dst_mobile.FieldByName('地区').AsString);
    mmo_mobile.Lines.Add('城市:' +
      RDB.dst_mobile.FieldByName('城市').AsString);
    mmo_mobile.Lines.Add('区号:' +
      RDB.dst_mobile.FieldByName('区号').AsString);
    mmo_mobile.Lines.Add('类型:' +
      RDB.dst_mobile.FieldByName('类型').AsString);
    RDB.dst_mobile.Next;
  end;
end;

procedure Tfm_tool.act_IDCardExecute(Sender: TObject);
var
  idcard, idcardnew, Card2, Card4, Card6, Sexal, jg, Sex, birthday: string;
begin
  idcard := Trim(edt_IDCard.Text);
  if Length(idcard) <> 15 then
    if Length(idcard) <> 18 then
    begin
      Application.MessageBox('身份证号码应为15位或18位!', '错误',
        MB_OK + MB_ICONSTOP);
      Exit;
    end;
  Card6 := 'select * from idcard where bm=' + Copy(idcard, 1, 6) + '';
  Card4 := 'select * from idcard where bm=' + Copy(idcard, 1, 4) + '';
  Card2 := 'select * from idcard where bm=' + Copy(idcard, 1, 2) + '';
  if Length(idcard) = 15 then
  begin
    Sexal := Copy(idcard, 15, 1);
    ExpandIDNum(idcard, idcardnew);
    birthday := '19' + Copy(idcard, 7, 2) + '年' + Copy(idcard, 9, 2) + '月' +
      Copy(idcard, 11, 2) + '日';
  end
  else
  begin
    Sexal := Copy(idcard, 17, 1);
    idcardnew := idcard;
    birthday := Copy(idcard, 7, 4) + '年' + Copy(idcard, 11, 2) + '月' +
      Copy(idcard, 13, 2) + '日';
  end;
  if RDB.dst_idcard.Active then
    RDB.dst_idcard.Active := False;
  RDB.dst_idcard.CommandText := Card6;
  RDB.dst_idcard.Open;
  if RDB.dst_idcard.RecordCount < 0 then
  begin
    RDB.dst_idcard.Active := False;
    RDB.dst_idcard.CommandText := Card4;
    RDB.dst_idcard.Open;
    if RDB.dst_idcard.RecordCount < 0 then
    begin
      RDB.dst_idcard.Active := False;
      RDB.dst_idcard.CommandText := Card2;
      RDB.dst_idcard.Open;
      if RDB.dst_idcard.RecordCount < 0 then
        Exit;
    end;
  end;
  RDB.dst_idcard.First;
  mmo_IDCard.Clear;
  while not RDB.dst_idcard.Eof do
  begin
    jg := RDB.dst_idcard.FieldByName('DQ').AsString;
    case StrToInt(Sexal) of
      1, 3, 5, 7, 9: Sex := '男';
    else
      Sex := '女';
    end;
    mmo_IDCard.Lines.Add('查身份证: ' + idcard);
    mmo_IDCard.Lines.Add('原户籍地: ' + jg);
    mmo_IDCard.Lines.Add('出生年月: ' + birthday);
    mmo_IDCard.Lines.Add('新身份证: ' + idcardnew);
    mmo_IDCard.Lines.Add('性    别: ' + Sex);
    RDB.dst_idcard.Next;
  end;

end;

procedure Tfm_tool.act_exitExecute(Sender: TObject);
begin
  close;
end;

procedure Tfm_tool.edt_mobileKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=13 then
    act_mobileExecute(Sender);
end;

procedure Tfm_tool.edt_IDCardKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=13 then
    act_IDCardExecute(Sender);
end;

procedure Tfm_tool.edt_postcodeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=13 then
    act_postcodeExecute(Sender);
end;

procedure Tfm_tool.edt_provinceKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=13 then
    act_provinceExecute(Sender);
end;

procedure Tfm_tool.edt_areacodeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=13 then
    act_areacodeExecute(Sender);
end;

procedure Tfm_tool.edt_cityKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=13 then
    act_cityExecute(Sender);
end;

end.

⌨️ 快捷键说明

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