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

📄 umain.~pas

📁 提供个人信息资料的编辑
💻 ~PAS
字号:
unit umain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, ComCtrls, ImgList, DBGrids, StdCtrls, Menus, shellapi,
  DB, ADODB;

type
  Tfrmmain = class(TForm)
    Panel1: TPanel;
    TreeView1: TTreeView;
    ImageList1: TImageList;
    Panel2: TPanel;
    Panel3: TPanel;
    dbgrdshow: TDBGrid;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    btnadd: TButton;
    btnsave: TButton;
    cbbcondition: TComboBox;
    edtcondition: TEdit;
    btnfind: TButton;
    btnrepair: TButton;
    btnsaverep: TButton;
    btndelete: TButton;
    btnabout: TButton;
    btnquit: TButton;
    statmain: TStatusBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    edtname: TEdit;
    edtage: TEdit;
    edtename: TEdit;
    edtadrtel: TEdit;
    edttel: TEdit;
    edtxlt: TEdit;
    cbbsex: TComboBox;
    dtpbirthday: TDateTimePicker;
    edtnation: TEdit;
    edtqqnum: TEdit;
    edtworktel: TEdit;
    edtfax: TEdit;
    edtpostnum: TEdit;
    cbbbkind: TComboBox;
    GroupBox4: TGroupBox;
    cbbkind: TComboBox;
    edtaddress: TEdit;
    edtwwwadr: TEdit;
    edtemail: TEdit;
    Memo1: TMemo;
    btnskim: TButton;
    btnletter: TButton;
    qrymsg: TADOQuery;
    dsmsg: TDataSource;
    qrymsgDSDesigner: TWideStringField;
    qrymsgDSDesigner2: TWideStringField;
    qrymsgDSDesigner3: TWordField;
    qrymsgDSDesigner4: TDateTimeField;
    qrymsgDSDesigner5: TWideStringField;
    qrymsgDSDesigner6: TWideStringField;
    qrymsgDSDesigner7: TWideStringField;
    qrymsgDSDesigner8: TWideStringField;
    qrymsgDSDesigner9: TWideStringField;
    qrymsgDSDesigner10: TWideStringField;
    qrymsgDSDesigner11: TWideStringField;
    qrymsgDSDesigner12: TWideStringField;
    qrymsgDSDesigner13: TWideStringField;
    qrymsgDSDesigner14: TWideStringField;
    qrymsgOICQ: TWideStringField;
    qrymsgEMAIL: TWideStringField;
    qrymsgDSDesigner15: TWideStringField;
    qrymsgDSDesigner16: TWideStringField;
    qrymsgDSDesigner17: TMemoField;
    Timer1: TTimer;
    procedure btnquitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnaddClick(Sender: TObject);
    procedure btnletterClick(Sender: TObject);
    procedure dbgrdshowDblClick(Sender: TObject);
    procedure edtwwwadrChange(Sender: TObject);
    procedure btnskimClick(Sender: TObject);
    procedure btnsaveClick(Sender: TObject);
    procedure edtageKeyPress(Sender: TObject; var Key: Char);
    procedure edtadrtelKeyPress(Sender: TObject; var Key: Char);
    procedure btndeleteClick(Sender: TObject);
    procedure edtemailChange(Sender: TObject);
    procedure btnaboutClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure btnrepairClick(Sender: TObject);
    procedure btnsaverepClick(Sender: TObject);
    procedure TreeView1DblClick(Sender: TObject);
    procedure edtconditionChange(Sender: TObject);
  private
    procedure formini();
    procedure Edittextshow;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmmain: Tfrmmain;

implementation
uses about;
{$R *.dfm}

//退出
procedure Tfrmmain.btnquitClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure Tfrmmain.formini();
begin
  edtcondition.Text := '';
  edtname.Text := '';
  edtage.Text := '';
  edtename.Text := '';
  edtadrtel.Text := '';
  edttel.Text := '';
  edtxlt.Text := '';
  edtnation.Text := '';
  edtqqnum.Text := '';
  edtaddress.Text := '';
  edtworktel.Text := '';
  edtfax.Text := '';
  edtpostnum.Text := '';
  edtaddress.Text := '';
  edtwwwadr.Text := '';
  edtemail.Text := '';
  Memo1.Text := '';
  cbbcondition.ItemIndex := 0;
  cbbsex.ItemIndex := -1;
  cbbbkind.ItemIndex := -1;
  cbbkind.ItemIndex := -1;
end;

function IsReadOnly(b: Boolean; colors: Tcolor): Boolean;
begin
  with frmmain do
  begin
    edtname.ReadOnly := b; edtname.color := colors;
    edtage.ReadOnly := b; edtage.color := colors;
    edtename.ReadOnly := b; edtename.color := colors;
    edtadrtel.ReadOnly := b; edtadrtel.color := colors;
    edttel.ReadOnly := b; edttel.color := colors;
    edtxlt.ReadOnly := b; edtxlt.color := colors;
    edtnation.ReadOnly := b; edtnation.color := colors;
    edtqqnum.ReadOnly := b; edtqqnum.color := colors;
    edtaddress.ReadOnly := b; edtaddress.color := colors;
    edtworktel.ReadOnly := b; edtworktel.color := colors;
    edtfax.ReadOnly := b; edtfax.color := colors;
    edtpostnum.ReadOnly := b; edtpostnum.color := colors;
    edtaddress.ReadOnly := b; edtaddress.color := colors;
    edtwwwadr.ReadOnly := b; edtwwwadr.color := colors;
    edtemail.ReadOnly := b; edtemail.color := colors;
    Memo1.ReadOnly := b; Memo1.color := colors;
    cbbsex.Enabled := not b; cbbsex.color := colors;
    cbbbkind.Enabled := not b; cbbbkind.color := colors;
    cbbkind.Enabled := not b; cbbkind.color := colors;
    dtpbirthday.Enabled := not b; dtpbirthday.Color := colors;
  end;
end;

function Load_Week(const Dtime: TDateTime): string;
const
  dstr: array[1..7] of string = ('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
begin
  result := dstr[DayOfWeek(dtime)];
end;

procedure Tfrmmain.FormCreate(Sender: TObject);
var FileName: string;
  errNO: integer;
  hMutex: HWND;
begin
  hMutex := CreateMutex(nil, False, pchar(Application.title));
  errNO := GetLastError;
  if errNO = ERROR_ALREADY_EXISTS then begin //检测是否重复运行
    Application.MessageBox('软件已经在运行', '重复运行', MB_OK);
    Application.Terminate;
  end
  else
  begin
    btnrepair.Enabled := False;
    btnsaverep.Enabled := False;
    statmain.Panels[2].Text := Load_Week(Date);
    statmain.Panels[1].Text := DateToStr(Date);
    formini;
    IsReadOnly(True, cl3DLight);
    btnletter.Enabled := (edtemail.Text <> '');
    btnskim.Enabled := (edtwwwadr.Text <> '');
    FileName := ExtractFilePath(ParamStr(0)) + '\MDB\电子通讯录.mdb';
    qrymsg.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
      FileName + ';Persist Security Info=False;jet OLEDB:Database Password=mimo;';
    with qrymsg do
    begin
      SQL.Text := 'select * from msg';
      Active := True;
    end;
  end;
end;

//加入新记录
procedure Tfrmmain.btnaddClick(Sender: TObject);
begin
  formini;
  IsReadOnly(False, clWindow);
  edtname.SetFocus;
end;

procedure Tfrmmain.btnletterClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', PChar('mailto:' + edtemail.Text + '?subject='), nil, nil, SW_SHOW);
end;

procedure Tfrmmain.dbgrdshowDblClick(Sender: TObject);
begin
  try
    with qrymsg do
    begin
      edtname.Text := FieldValues['姓名'];
      edtage.Text := FieldValues['年龄'];
      edtename.Text := FieldValues['网名'];
      edtadrtel.Text := FieldValues['住宅电话'];
      edttel.Text := FieldValues['手机号码'];
      edtxlt.Text := FieldValues['小灵通'];
      edtnation.Text := FieldValues['民族'];
      edtqqnum.Text := FieldValues['OICQ号'];
      edtaddress.Text := FieldValues['家庭住址'];
      edtworktel.Text := FieldValues['单位电话'];
      edtfax.Text := FieldValues['传真号码'];
      edtpostnum.Text := FieldValues['邮政编码'];
      edtwwwadr.Text := FieldValues['网址'];
      edtemail.Text := FieldValues['E-MAIL'];
      Memo1.Text := FieldValues['备注']; cbbsex.Style := csDropDown;
      cbbsex.Text := FieldValues['性别']; cbbbkind.Style := csDropDown;
      cbbbkind.Text := FieldValues['血型']; cbbkind.Style := csDropDown;
      cbbkind.Text := FieldValues['类型'];
      dtpbirthday.Date := FieldValues['生日'];
    end;
    btnrepair.Enabled := True;
    btnsaverep.Enabled := True;
  except
  end;
end;

procedure Tfrmmain.edtwwwadrChange(Sender: TObject);
begin
  btnskim.Enabled := (edtwwwadr.Text <> '');
end;

procedure Tfrmmain.btnskimClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', pchar(edtwwwadr.text), nil, nil, SW_SHOW);
end;

procedure Tfrmmain.Edittextshow;
begin
  with qrymsg do
  begin
    FieldByName('姓名').AsString := Trim(edtname.Text);
    FieldByName('年龄').AsInteger := StrToInt(Trim(edtage.Text));
    FieldByName('网名').AsString := Trim(edtename.Text);
    FieldByName('住宅电话').AsString := Trim(edtadrtel.Text);
    FieldByName('手机号码').AsString := Trim(edttel.Text);
    FieldByName('小灵通').AsString := Trim(edtxlt.Text);
    FieldByName('民族').AsString := Trim(edtnation.Text);
    FieldByName('OICQ号').AsString := Trim(edtqqnum.Text);
    FieldByName('家庭住址').AsString := Trim(edtaddress.Text);
    FieldByName('单位电话').AsString := Trim(edtworktel.Text);
    FieldByName('传真号码').AsString := Trim(edtfax.Text);
    FieldByName('邮政编码').AsString := Trim(edtpostnum.Text);
    FieldByName('网址').AsString := Trim(edtwwwadr.Text);
    FieldByName('E-MAIL').AsString := Trim(edtemail.Text);
    FieldByName('备注').AsVariant := Memo1.Text;
    FieldByName('生日').AsString := DateToStr(dtpbirthday.Date);
    FieldByName('性别').AsString := cbbsex.Text;
    FieldByName('血型').AsString := cbbbkind.Text;
    FieldByName('类型').AsString := cbbkind.Text;
  end;
end;

//保存新记录
procedure Tfrmmain.btnsaveClick(Sender: TObject);
begin
  if (edtname.Text <> '') and (cbbkind.Text <> '') and (cbbsex.Text <> '') then
  begin
    with qrymsg do
    begin
      Edit;
      if MessageBox(0, '是否增加本条信息?', '询问', MB_YESNO + MB_ICONQUESTION)
        = IDYES then
      begin
        Append;
        Edittextshow;
        Post;
        if MessageBox(0, '增加信息成功,是否还增加' + #13#10 +
          '     其他信息?', '询问', MB_YESNO + MB_ICONQUESTION) = IDYES then
        begin
          formini;
          edtname.SetFocus;
        end
        else
        begin
          formini;
          IsReadOnly(True, cl3DLight);
        end;
      end;
    end;
  end
  else
    MessageBox(0, '请确认姓名,性别,类型' + #13#10 + '   信息的完整性!   ', '提示',
      MB_OK + MB_ICONINFORMATION);
end;

procedure Tfrmmain.edtageKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', Char(VK_BACK), Char(VK_RETURN)]) then
  begin
    Key := #0;
  end;
end;

procedure Tfrmmain.edtadrtelKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', '-', Char(VK_BACK), Char(VK_RETURN)]) then
  begin
    Key := #0;
  end;
  if (Key = '-') and (Pos('-', Trim((Sender as TEdit).Text)) <> 0) then
  begin
    Key := #0;
    (sender as TEdit).SetFocus;
  end;
end;

//删除记录
procedure Tfrmmain.btndeleteClick(Sender: TObject);
begin
  if MessageBox(0, '是否删除本条信息!', '询问', MB_YESNO + MB_ICONQUESTION) =
    IDYES then
  begin
    qrymsg.Delete;
    if qrymsg.RecordCount <> 0 then
    begin
      qrymsg.First;
      frmmain.dbgrdshowDblClick(nil);
    end;
  end;
end;

procedure Tfrmmain.edtemailChange(Sender: TObject);
begin
  btnletter.Enabled := (edtemail.Text <> '');
end;

//关于
procedure Tfrmmain.btnaboutClick(Sender: TObject);
begin
  try
    Application.CreateForm(Tfrmabout, frmabout);
    frmabout.ShowModal;
  finally
    frmabout.Free;
  end;
end;

procedure Tfrmmain.Timer1Timer(Sender: TObject);
begin
  statmain.Panels[4].Text := TimeToStr(Now);
end;

//记录修改
procedure Tfrmmain.btnrepairClick(Sender: TObject);
begin
  IsReadOnly(False, clWindow);
  edtname.SetFocus;
end;

//保存修改
procedure Tfrmmain.btnsaverepClick(Sender: TObject);
begin
  if (edtname.Text <> '') and (cbbkind.Text <> '') and (cbbsex.Text <> '') then
  begin
    with qrymsg do
    begin
      Edit;
      if MessageBox(0, '是否修改本条信息?', '询问', MB_YESNO + MB_ICONQUESTION)
        = IDYES then
      begin
        Append;
        Edittextshow;
        Post;
        if MessageBox(0, '修改信息成功,是否还修改' + #13#10 +
          '     其他信息?', '询问', MB_YESNO + MB_ICONQUESTION) = IDYES then
        begin
          First;
          dbgrdshowDblClick(nil);
          edtname.SetFocus;
        end
        else
          formini;
        IsReadOnly(True, cl3DLight);
      end;
    end;
  end
  else
    MessageBox(0, '请确认姓名,性别,类型' + #13#10 + '   信息的完整性!   ', '提示',
      MB_OK + MB_ICONINFORMATION);
end;


procedure Tfrmmain.TreeView1DblClick(Sender: TObject);
var str: string;
  i: Integer;
begin
  str := TreeView1.Selected.Text;
  with qrymsg do
  begin
    Close;
    SQL.Clear;
    i := TreeView1.Selected.Index;
    if i in [0, 1, 2, 3, 4, 5] then
      SQL.Text := 'select * from msg where 类型 = ''' + str + '''order by ''' + str + '''';
    if i in [6] then
      SQL.Text := 'select * from msg';
    Open;
    First;
    if qrymsg.RecordCount < 0 then
      MessageBox(0, '没有找到相关的信息!', '提示', MB_OK + MB_ICONINFORMATION)
    else
      MessageBox(0, pchar('共查找到' + IntToStr(qrymsg.RecordCount) + '条记录!'), '询问', MB_OK + MB_ICONINFORMATION);
  end;
end;

procedure Tfrmmain.edtconditionChange(Sender: TObject);
begin
  if cbbcondition.Text <> '' then
  begin
    with qrymsg do
    begin
      Close;
      SQL.Clear;
      SQL.Text := 'select * from msg where (' + cbbcondition.Text + ' like ''' + edtcondition.Text + '%'')or(' + cbbcondition.Text + ' like ''%' + edtcondition.Text + '%'')or(' + cbbcondition.Text + ' like ''%' + edtcondition.Text + '%'') ';
      Open;
      First;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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