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

📄 main.pas

📁 是一个手机功能的模拟程序
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, ToolWin, ComCtrls, ImgList, Buttons, StdCtrls, about,
  Grids, DBGrids, DB, ADODB,global,com;

type
  TForm_main = class(TForm)
    Panel_top_main: TPanel;
    Panel_left: TPanel;
    StatusBar1: TStatusBar;
    Splitter1: TSplitter;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    ImageList_menu: TImageList;
    Panel_main: TPanel;
    PopupMenu1: TPopupMenu;
    N_reloadAll: TMenuItem;
    N21: TMenuItem;
    ImageList_toolbar_phonebook: TImageList;
    Splitter2: TSplitter;
    Panel_lefttop: TPanel;
    Panel_leftbottom: TPanel;
    SpeedButton_phonebook: TSpeedButton;
    SpeedButton_shortmessage: TSpeedButton;
    SpeedButton_callrecord: TSpeedButton;
    Notebook_subitem: TNotebook;
    ListView_phonebook_sub: TListView;
    ImageList_subitem: TImageList;
    ListView_callrecord_sub: TListView;
    ListView_ShortMessage_sub: TListView;
    N16: TMenuItem;
    N17: TMenuItem;
    CoolBar1: TCoolBar;
    ToolBar_phonebook: TToolBar;
    ToolButton_reloadPHB: TToolButton;
    ToolButton2: TToolButton;
    ToolButton_AddPHB: TToolButton;
    ToolButton_delPHB: TToolButton;
    Timer_systemtime: TTimer;
    N_reloadPHB: TMenuItem;
    N_reloadSMS: TMenuItem;
    ToolBar_shortmessage: TToolBar;
    ToolButton_reloadSMS: TToolButton;
    ToolButton8: TToolButton;
    ToolButton_AddSMS: TToolButton;
    ToolButton_delSMS: TToolButton;
    ToolButton11: TToolButton;
    ToolButton_ReSMS: TToolButton;
    ToolButton_FWSMS: TToolButton;
    ToolButton_editSMS: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolBar_callrecord: TToolBar;
    ToolButton_reloadCR: TToolButton;
    ToolButton15: TToolButton;
    ToolButton_delCR: TToolButton;
    ToolButton18: TToolButton;
    ADOQuery_phb: TADOQuery;
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    ADOQuery_phbSerialNo: TIntegerField;
    ADOQuery_phbName: TWideStringField;
    ADOQuery_phbMemo: TWideStringField;
    Notebook_maintable: TNotebook;
    ListView_phonebook_main: TListView;
    ListView_callrecord_main: TListView;
    ADOQuery_phbPhoneNo: TWideStringField;
    ADOQuery_phbHomeNo: TWideStringField;
    ADOQuery_phbOfficeNo: TWideStringField;
    N22: TMenuItem;
    ListView_shortmessage_main: TListView;
    ADOQuery_sms: TADOQuery;
    Query1: TADOQuery;
    ADOQuery_smsSerialNo: TAutoIncField;
    ADOQuery_smsStatus: TWideStringField;
    ADOQuery_smsPhoneNo: TWideStringField;
    ADOQuery_smsName: TWideStringField;
    ADOQuery_smsDate: TWideStringField;
    ADOQuery_smsMessage: TMemoField;
    Panel_phb: TPanel;
    Panel_sms: TPanel;
    Panel_cr: TPanel;
    ImageList_toolbar_shortmessage: TImageList;
    ImageList_toolbar_callrecord: TImageList;
    N15: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    N25: TMenuItem;
    N26: TMenuItem;
    N27: TMenuItem;
    N28: TMenuItem;
    N29: TMenuItem;
    N30: TMenuItem;
    N32: TMenuItem;
    N33: TMenuItem;
    N31: TMenuItem;
    N34: TMenuItem;
    N35: TMenuItem;
    N36: TMenuItem;
    N37: TMenuItem;
    N38: TMenuItem;
    N39: TMenuItem;
    N40: TMenuItem;
    N41: TMenuItem;
    N42: TMenuItem;
    N43: TMenuItem;
    procedure N14Click(Sender: TObject);
    procedure SpeedButton_phonebookClick(Sender: TObject);
    procedure SpeedButton_shortmessageClick(Sender: TObject);
    procedure SpeedButton_callrecordClick(Sender: TObject);
    procedure N17Click(Sender: TObject);
    procedure Timer_systemtimeTimer(Sender: TObject);
    procedure ListView_phonebook_mainColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure ListView_phonebook_mainDblClick(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure ListView_callrecord_mainColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure N_reloadCRClick(Sender: TObject);
    procedure ListView_callrecord_subClick(Sender: TObject);
    procedure N22Click(Sender: TObject);
    procedure ToolButton_delCRClick(Sender: TObject);
    procedure N_reloadPHBClick(Sender: TObject);
    procedure ToolButton_AddPHBClick(Sender: TObject);
    procedure ToolButton_delPHBClick(Sender: TObject);
    procedure ListView_phonebook_subClick(Sender: TObject);
    procedure N_reloadAllClick(Sender: TObject);
    procedure ListView_ShortMessage_subClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure N_reloadSMSClick(Sender: TObject);
    procedure ListView_shortmessage_mainDblClick(Sender: TObject);
    procedure ListView_shortmessage_mainColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure ToolButton_delSMSClick(Sender: TObject);
    procedure ToolButton_AddSMSClick(Sender: TObject);
    procedure ToolButton_ReSMSClick(Sender: TObject);
    procedure ToolButton_FWSMSClick(Sender: TObject);
    procedure ToolButton_editSMSClick(Sender: TObject);
    procedure N26Click(Sender: TObject);
    procedure N27Click(Sender: TObject);
    procedure N30Click(Sender: TObject);
    procedure N33Click(Sender: TObject);
    procedure N28Click(Sender: TObject);
    procedure N31Click(Sender: TObject);
    procedure N34Click(Sender: TObject);
    procedure N35Click(Sender: TObject);
    procedure N37Click(Sender: TObject);
    procedure N39Click(Sender: TObject);
    procedure N41Click(Sender: TObject);
    procedure N42Click(Sender: TObject);
    procedure N43Click(Sender: TObject);
    procedure ListView_callrecord_mainDblClick(Sender: TObject);
  private
    { Private declarations }
    FLastIndex_phonebook:Integer;
    FLastIndex_shortmessage:Integer;
    FLastIndex_callrecord:Integer;
    FLastViewState_phonebook:TViewState_PHB;
    FLastViewState_ShortMessage:TViewState_SMS;
    FLastViewState_callrecord:TViewState_CR;
    procedure ListView_PhonebookSort(sort:string);
    procedure ListView_ShortMessageSort(sort:string);
    procedure ListView_CallRecordSort(sort:string);
    procedure AddPHB;
    procedure AddPHBtoPC(ulrecn:PPC_PHB_Content);
    procedure UpdatePHBtoPC(ulrecn:PPC_PHB_Content;sn:integer);
    function AddPHBToList(ulrecn:PPC_PHB_Content;Location:string):integer;
    function UpdatePHBToList(ulrecn:PPC_PHB_Content;id:integer):integer;
    function DeletePHBinPC(id:integer):boolean;
    procedure EditSMS;
    procedure AddSMStoPC(ulrecn:PPC_SMS_Content);
    procedure UpdateSMStoPC(ulrecn:PPC_SMS_Content;sn:integer);
    function DeleteSMSinPC(id:integer):boolean;
    function AddSmsToList(ulrecn:PPC_SMS_Content;Location:string):integer;
  public
    { Public declarations }
  end;

var
  Form_main: TForm_main;

implementation

uses phonebook, setupdiag, progressbar, fileop, shortmessage, callrecord;

{$R *.dfm}

//回调函数部分
//*****************phonebook**********************//
procedure configphblist;
var listcount:integer;
begin
  listcount:=phonebookList.Count;
  while listcount>0 do
  begin
    if PPhoneBook(PhoneBookList.Items[listcount-1]).serialNo=-1 then
    begin
      if PPhoneBook(PhoneBookList.Items[listcount-1]).location='PC' then
        dec(Count_PHB_PC);
      if PPhoneBook(PhoneBookList.Items[listcount-1]).location='手机' then
        dec(Count_PHB_NVM);
      if PPhoneBook(PhoneBookList.Items[listcount-1]).location='SIM' then
        dec(Count_PHB_SIM);
      freemem(PhoneBookList.Items[listcount-1]);
      PhoneBookList.Delete(listcount-1);
    end;
    dec(listcount);
  end;
end;

procedure docompletephb;
begin
  CurPHB_index:=1;
  status_PHB:=PC_PHB_status_init;

  form_progressbar.ProgressBar1.Position:=1;

  sleep(1000);
  form_progressbar.Hide;
  form_progressbar.close;
//根据上次选择显示的状态来显示新的内容
  case Form_main.FLastViewState_phonebook of
  ALL_PHB:Form_main.SpeedButton_phonebookClick(nil);
  V_PHB:  Form_main.ListView_phonebook_subClick(nil);
  S_PHB:  Form_main.ListView_phonebook_subClick(nil);
  P_PHB:  Form_main.ListView_phonebook_subClick(nil);
  end;
end;

procedure pc_callback_PHBGetInfo(p:pointer);
var showstr:string;
    tempphb:PPhoneBook;
    objname:array[0..PHB_name_len+3-1] of char;
    objmemo:array[0..PHB_memo_len+3-1] of char;
begin
  if pPC_Interface_Info(p).status<>ord(PC_Error_NoError) then
  begin     //从target端返回出错信息后的处理
    case pPC_Interface_Info(p).status of
      ord(PC_Error_SerialNoResponse):
      begin
        form_main.statusbar1.Panels[0].Text:='通讯超时,可能串口连接有故障,请检查串口连接,关闭程序后重新打开';//说明target响应timeout,for example:serial is invalid
        Serial_Close;
        Comhandle:=2;
        form_main.StatusBar1.Panels[1].Text:='未连接';
      end;
      ord(PC_Error_MMINotAllow):form_main.statusbar1.Panels[0].Text:='手机未设在同步状态菜单内';//手机不允许pc同步, 要先进入菜单工具箱->pc同步
      ord(PC_Error_MMINeedPause):form_main.statusbar1.Panels[0].Text:='有电话进来,同步暂停';
      ord(App_Error_ReadError):form_main.statusbar1.Panels[0].Text:='读取电话簿记录过程中有错误!';
      ord(App_Error_WriteError):form_main.statusbar1.Panels[0].Text:='新建电话簿记录过程中有错误,电话簿已存满!';
      ord(App_Error_ModifyError)://如果是更新错误
      begin
        form_main.statusbar1.Panels[0].Text:='更新电话簿记录过程中有错误,该条记录已不存在!';
        if CurInsPHB_Index>=0 then
        begin
          tempphb:=PPhoneBook(phonebooklist[CurInsPHB_Index]);

          fillchar(objname,sizeof(objname),#0);
          strpcopy(objname,tempphb.name);

          ASCtoUnicode(objname,tempphb.data.phkitem.name); //将姓名中文asc转换为unicode
          strpcopy(tempphb.data.phkitem.number,tempphb.number);
          strpcopy(tempphb.data.phkitem.office,tempphb.office);
          strpcopy(tempphb.data.phkitem.home,tempphb.home);
          fillchar(objmemo,sizeof(objmemo),#0);
          strpcopy(objmemo,tempphb.memo);
          ASCtoUnicode(objmemo,tempphb.data.phkitem.memo); //将memo中文asc转换为unicode
          if tempphb.Location='手机' then //只有手机类型才需要去更新组别
            tempPHB.data.phkitem.info:=grouptoinfo(tempphb.group);
          CurInsPHB_Index:=-1;
          form_main.Panel_Phb.Caption:='电话簿: PC中条目数:'+inttostr(Count_PHB_PC)
                                  +',手机存储器中条目数:'+inttostr(Count_PHB_NVM)+'(最多'+inttostr(Max_PHB_NVM)
                                  +'),SIM卡中条目数:'+inttostr(Count_PHB_SIM)+'(最多'+inttostr(Max_PHB_SIM)+')';
        end;
      end;
      ord(App_Error_DeleteError):form_main.statusbar1.Panels[0].Text:='删除电话簿记录失败!';
      ord(App_Error_CopyError):form_main.statusbar1.Panels[0].Text:='复制电话簿记录到手机过程有错误,手机电话簿已存满';
      ord(App_Error_InfoError):form_main.statusbar1.Panels[0].Text:='获取电话簿记录信息有错误';
    end;
    configphblist;
    docompletephb;
    exit;
  end;

  case status_PHB of
    PC_PHB_status_init://下载取消时
    begin
      if PPC_Interface_Info(p).pdata_cmd<>nil then
        freemem(PPC_Interface_Info(p).pdata_cmd);
      if PPC_Interface_Info(p).pdata_dlbuff<>nil then
        freemem(PPC_Interface_Info(p).pdata_dlbuff);
      if PPC_Interface_Info(p).pdata_ulbuff<>nil then
        freemem(PPC_Interface_Info(p).pdata_ulbuff);

⌨️ 快捷键说明

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