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

📄 main.pas

📁 软件类别: 数据库 软件大小: 1.24M 运行环境: DELPHI 精巧的DELPHI通讯录程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{
//*********************************************************
//                 Kaersoft    卡尔软件
//         *************************************
//          http://www.kaer.cn/default.aspx
//          Email:Sdwhxyr@YEAH.NET
//          QQ:54076683
//          Delphi 6.0   PASS
//          调测:JPYC
//**********************************************************
                        程序功能
    ***************************************************
    *           个人通信录(V1.0)                      *
    * 程序设计:周小军 chowsg@21cn.com                *
    * 设计环境:Delphi 6.0+TinyDB 2.9                 *
    * 如在Delphi下编译,需另外下载TinyDB控件组支持    *
    * TinyDB下载网址:tinydb.yeah.net                 *
    * 界面控件使用了Xpmenu,在网上很易找到的          *
    *                  2003年6月                      *
    ***************************************************
//**********************************************************
}
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, XPMenu, StdCtrls, ComCtrls, ExtCtrls, ToolWin, DB, TinyDB,
  DBCtrls, ImgList,ShellAPI;

const
  DBPassWord='HELLO';  //在TinyDB中打开数据库的密码

type
  TFrmMain = class(TForm)
    MainMenu1: TMainMenu;
    ADBKManual: TMenuItem;
    RecAddNew: TMenuItem;
    RecModify: TMenuItem;
    RecDelete: TMenuItem;
    QuitSys: TMenuItem;
    DataManual: TMenuItem;
    DBBackup: TMenuItem;
    DBRestore: TMenuItem;
    SysHelp: TMenuItem;
    AboutHelp: TMenuItem;
    AboutSource: TMenuItem;
    AboutMe: TMenuItem;
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    CmdSearch: TButton;
    XPMenu1: TXPMenu;
    TreeView1: TTreeView;
    Panel1: TPanel;
    TAB1: TTinyTable;
    LabT01: TLabel;
    LabT02: TLabel;
    LabT03: TLabel;
    LabT04: TLabel;
    LabT05: TLabel;
    LabT06: TLabel;
    LabT07: TLabel;
    LabT08: TLabel;
    LabT09: TLabel;
    LabT10: TLabel;
    LabT11: TLabel;
    SysSet: TMenuItem;
    SetLogPass: TMenuItem;
    SetADBKType: TMenuItem;
    ImageList1: TImageList;
    StatusBar1: TStatusBar;
    Null11: TMenuItem;
    Null21: TMenuItem;
    Null41: TMenuItem;
    Timer1: TTimer;
    DBToTxt: TMenuItem;
    TAB2: TTinyTable;
    PopupMenu1: TPopupMenu;
    POPAddNew: TMenuItem;
    POPModify: TMenuItem;
    PopDelete: TMenuItem;
    LabS01: TLabel;
    LabS02: TLabel;
    LabS03: TLabel;
    LabS04: TLabel;
    LabS05: TLabel;
    LabS06: TLabel;
    LabS07: TLabel;
    LabS08: TLabel;
    LabS09: TLabel;
    LabS10: TLabel;
    LabS11: TLabel;
    PopRefresh: TMenuItem;
    PopQuit: TMenuItem;
    EditSearch: TEdit;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    function DBOpen_SysInfo(var Tab:TTinyTable):boolean;
    function DBOpen_AdTypes(var Tab:TTinyTable):boolean;
    function DBOpen_ADBK(var Tab:TTinyTable):boolean;
    procedure CreateDB(Sender: TObject);
    procedure TVRefresh(var TV:TTreeview);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure SetLogPassClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure RecAddNewClick(Sender: TObject);
    procedure SetADBKTypeClick(Sender: TObject);
    procedure AboutMeClick(Sender: TObject);
    procedure POPModifyClick(Sender: TObject);
    procedure TreeView1DblClick(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure POPAddNewClick(Sender: TObject);
    procedure PopDeleteClick(Sender: TObject);
    procedure RecModifyClick(Sender: TObject);
    procedure RecDeleteClick(Sender: TObject);
    procedure PopRefreshClick(Sender: TObject);
    procedure PopQuitClick(Sender: TObject);
    procedure QuitSysClick(Sender: TObject);
    procedure CmdSearchClick(Sender: TObject);
    procedure EditSearchKeyPress(Sender: TObject; var Key: Char);
    procedure EditSearchDblClick(Sender: TObject);
    procedure DBBackupClick(Sender: TObject);
    procedure DBRestoreClick(Sender: TObject);
    procedure DBToTxtClick(Sender: TObject);
    procedure AboutHelpClick(Sender: TObject);
    procedure AboutSourceClick(Sender: TObject);
  private
    { Private declarations }
  public
    DBName:string;        //数据库名称
    LogPass:string;       //系统登录密码,从数据库SysInfo表中读取
    Logined:boolean;      //系统是否已经登录
    { Public declarations }
  end;

var
  FrmMain: TFrmMain;

implementation

uses Login, SetPass, Input, SetADType, AboutMe, Help;

{$R *.dfm}

function TFrmMain.DBOpen_SysInfo(var Tab:TTinyTable):boolean;
{打开数据库中SysInfo表的函数}
begin
  try
    Tab.Close;
    Tab.DatabaseName:=FrmMain.DBName;
    Tab.TableName:='SysInfo';
    Tab.Password:=DBPassWord;
    Tab.Open;
    Result:=True;
  except
    Result:=False;
  end;
end;

function TFrmMain.DBOpen_ADTypes(var Tab:TTinyTable):boolean;
{打开数据库中AdTypes表的函数}
begin
  try
    Tab.Close;
    Tab.DatabaseName:=FrmMain.DBName;
    Tab.TableName:='AdTypes';
    Tab.Password:=DBPassWord;
    Tab.Open;
    Result:=True;
  except
    Result:=False;
  end;
end;

function TFrmMain.DBOpen_ADBK(var Tab:TTinyTable):boolean;
{打开数据库中ADBK表的函数}
begin
  try
    Tab.Close;
    Tab.DatabaseName:=FrmMain.DBName;
    Tab.TableName:='ADBK';
    Tab.IndexName:='ADBIdx';
    Tab.Password:=DBPassWord;
    Tab.Open;
    Result:=True;
  except
    Result:=False;
  end;
end;

procedure TFrmMain.CreateDB(sender:Tobject);
{生成空白数据库}
var
  TDB:TTinyDataBase;    //TinyDB控件
  TTB:TTinyTable;       //TinyDB控件
begin
   Try
     TDB:=TTinyDataBase.Create(self);
     TDB.DatabaseName:=DBName;
     TDB.Password:=DBPassWord;
     TDB.CreateDatabase(DBName,True, clNormal, 'ZLIB', True, 'Twofish', DbPassWord,True);
     TDB.CreateTable('SysInfo',[FieldItem('PassWord', ftString, 10)]); //密码存储
     TDB.CreateTable('ADTypes',[FieldItem('TypeName', ftstring, 8)]);  //通信录类别
     TDB.CreateTable('ADBK',[
          FieldItem('ADType',ftString,8),   //类别
          FieldItem('Name',ftString,10),    //姓名
          FieldItem('Mobile',ftString,11),  //手机号码
          FieldItem('Email',ftString,20),   //电子邮箱
          FieldItem('QQ',ftString,12),      //QQ号码
          FieldItem('OffTel',ftString,18),  //办公电话
          FieldItem('HomeTel',ftString,13), //住宅电话
          FieldItem('Fax',ftString,13),     //传真号码
          FieldItem('ZipCode',ftString,6),  //邮政编码
          FieldItem('ContAdd',ftString,40), //联络地址
          FieldItem('Memo',ftString,20)     //备注
      ]);                                   //创建通信录数据库
      TDB.CreateIndex('ADBK','ADBIdx',[tiPrimary],['ADType','Name']); //索引
      TDB.Free;
      TTB:=TTinyTable.Create(self);
      with TTB do
      begin
        if DBOpen_SysInfo(TTB) then AppendRecord(['']); //插入登录密码,默认为无
        if DBOpen_ADTypes(TTB) then
        begin
          AppendRecord(['朋友']); //加入三类基本通信录分类
          AppendRecord(['亲戚']);
          AppendRecord(['同学']);
        end;
      end;
      TTB.Free;
      MessageDlg(
      '************* Welcome *************'+#13+#13+
      '已成功新建空白数据库!'+#13+#13+
      '如果是初次使用,请先设置好[通信录分类],'+#13+#13+
      '具体的操作细节请参阅[使用帮助]。',mtInformation,[mbOK],0);
    except
      DeleteFile(DBName);
    end;
end;

procedure LABSShow(ShowName:string);
{显示某条记录内容}
begin
   with FrmMain.TAB1 do
   begin
     Filtered:=False;
     Locate('Name',Trim(ShowName),[]);
     FrmMain.LabS01.Caption:=FieldByName('AdType').AsString;
     FrmMain.LabS02.Caption:=FieldByName('Name').AsString;
     FrmMain.LabS03.Caption:=FieldValues['Mobile'];
     FrmMain.LabS04.Caption:=FieldValues['Email'];
     FrmMain.LabS05.Caption:=FieldValues['QQ'];
     FrmMain.LabS06.Caption:=FieldValues['OffTel'];
     FrmMain.LabS07.Caption:=FieldValues['HomeTel'];
     FrmMain.LabS08.Caption:=FieldValues['Fax'];
     FrmMain.LabS09.Caption:=FieldValues['ZipCode'];
     FrmMain.LabS10.Caption:=FieldValues['ContAdd'];
     FrmMain.LabS11.Caption:=FieldValues['Memo'];
    end;
end;

procedure LABSClear;
{清除右侧显示记录的内容}
begin
  with FrmMain do
  begin
    Labs01.Caption:='';
    Labs02.Caption:='';
    Labs03.Caption:='';
    Labs04.Caption:='';
    Labs05.Caption:='';
    Labs06.Caption:='';
    Labs07.Caption:='';
    Labs08.Caption:='';
    Labs09.Caption:='';
    Labs10.Caption:='';
    Labs11.Caption:='';
  end;
end;

procedure TFrmMain.TVRefresh(var TV:TTreeview);
{刷新TreeView}
var
  RootList:Tstringlist;
  TmpNode:TTreeNode;
  Pstr:^string;
  i:integer;
begin
  RootList:=TstringList.Create;
  if DBOpen_ADTypes(FrmMain.TAB2) then
     while not FrmMain.TAB2.eof do
        begin
          RootList.Append(Trim(FrmMain.TAB2.FieldValues['TypeName']));
          FrmMain.TAB2.Next;
        end
  else showmessage('打不开ADTypes表!');  //以上读取Treeview的第一层内容
  New(Pstr);
  TV.Items.Clear;
  TV.Items.BeginUpdate;
  if DBOpen_ADBK(FrmMain.TAB1) then
  begin
    FrmMain.TAB1.Filtered:=False;
    StatusBar1.Panels[0].Text:='记录数:'+IntToStr(FrmMain.TAB1.RecordCount);
    for i:=0 to RootList.Count-1 do
      begin
        TmpNode:=TV.Items.AddObject(nil,RootList[i],pstr);
        with FrmMain.TAB1 do
        begin
          Filtered:=False;
          Filter:='ADType='+''''+RootList[i]+'''';
          Filtered:=True;
          First;
          while not eof do

⌨️ 快捷键说明

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