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

📄 untmain.~pas

📁 1、通过串口连接手机或短信终端发送短信; 2、内置Access数据库
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit UntMain;

interface

uses
  Windows, Messages, SysUtils,StrUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WinSkinData, StdCtrls, Menus, ComCtrls, ExtCtrls, Buttons, ShellAPI,
  Grids, DBGridEh, DB, ADODB, DateUtils;

const
  WM_TRAYNOTIFY = WM_USER +109;  

type
  TFrmMain = class(TForm)
    SkinData1: TSkinData;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    Panel2: TPanel;
    Splitter1: TSplitter;
    DBGridEh1: TDBGridEh;
    Label1: TLabel;
    EdtCorpName: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    EdtCorpCity: TEdit;
    EdtCorpKeywords: TEdit;
    Button1: TButton;
    DBGridEh2: TDBGridEh;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    EdtName: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    DatePickerSend: TDateTimePicker;
    TimePickerSend: TDateTimePicker;
    MemoSend: TMemo;
    EdtSendTimes: TEdit;
    Label18: TLabel;
    CheckBoxReqStatus: TCheckBox;
    CheckBoxCrypt: TCheckBox;
    Button2: TButton;
    Button3: TButton;
    EdtSex: TEdit;
    EdtBirth: TEdit;
    EdtCity: TEdit;
    EdtZipcode: TEdit;
    EdtAddr: TEdit;
    EdtCorp: TEdit;
    EdtJob: TEdit;
    EdtEmail: TEdit;
    EdtComm: TEdit;
    EdtPhone: TEdit;
    ComboBoxToGroup: TComboBox;
    ComboBoxToHuman: TComboBox;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    PopupMenu1: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    Timer1: TTimer;
    Button4: TButton;
    Button5: TButton;
    Label19: TLabel;
    EdtSender: TEdit;
    TimerRS: TTimer;
    Label20: TLabel;
    lblCount: TLabel;
    Label21: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure DBGridEh1CellClick(Column: TColumnEh);
    procedure Button5Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGridEh2CellClick(Column: TColumnEh);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure EdtSenderChange(Sender: TObject);
    procedure MemoSendChange(Sender: TObject);
    procedure ComboBoxToHumanChange(Sender: TObject);
  private
    { Private declarations }
    procedure LoadSysConfigData;
    function LoadSMSData:Boolean;
    procedure RemoveOldData;
    function LoadGroups(UserID:string):Boolean;
    function LoadPeople(GroupName:string):Boolean;//规定若groupname长度为零表示要所有用户
    function WhenToSendSMS(aTime:TDateTime; SendAtOnce:Boolean):Boolean;    
  public
    { Public declarations }
    procedure WndProc(var Msg:TMessage); override;
  end;

var
  FrmMain: TFrmMain;
  MaintainTableName:string;
  nd:NotifyIconData;
  SMSEnabled:Boolean=True;
  
function IniSMS(nComNo:integer; pMode:PChar; pCSCA: PChar):WordBool;stdcall;external 'zcomsms.dll';
function SendSMS( pNumber:PChar; numberLen:integer; pMessage:PChar; messageLen:integer):integer;stdcall;external 'zcomsms.dll';

implementation

uses UntMaintain, UntMaintainVS, UntDM, UntLogin, UntInit, UntSQL, UntCrypt;

{$R *.dfm}

procedure TFrmMain.FormCreate(Sender: TObject);
var
  pDir:PChar;
  sDir:string;
  nDir:integer;
begin
  nDir := 300;
  pDir := AllocMem(nDir);
  try
    GetCurrentDirectory(nDir,pDir);
    sDir := pDir;
    if sDir[Length(sDir)]<>'\' then sDir := sDir + '\';
    DM1.Conn.Connected := False;
    DM1.Conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Persist Security Info=True'
                                  +';Data Source='
                                  + sDir
                                  +'fh.mdb';
    try
      DM1.QryLogin.Connection.Connected := True;
    except
      Passed := False;
      Application.MessageBox('请重新设定数据库的连接用户名和连接密码!','数据库连接失败');
    end;
  finally
    FreeMem(pDir,nDir);
  end;
  if Passed then
  begin
    Application.CreateForm(TfrmLogin,frmLogin);
    frmLogin.Showmodal;
  end;
  if not Passed then
  begin
    Application.Terminate;
    exit;
  end;
  LoadSysConfigData;
  RemoveOldData;
  LoadSMSData;
  DBGridEh1.DataSource.DataSet.Open;
  DatePickerSend.DateTime := now;
  TimePickerSend.DateTime := now;
  if not IniSMS(myLocalIni.ComNo, PChar(myLocalIni.Mode), PChar(myLocalIni.SCA)) then SMSEnabled := False;
end;

procedure TFrmMain.N3Click(Sender: TObject);
begin
  Close;
end;

procedure TFrmMain.N10Click(Sender: TObject);
begin
  ShellAbout(frmMain.Handle,
             '傅洪通讯录系统',
             'Copyright(c)2002-2005'#13'yinshanyun@163.com',
             Application.Icon.Handle);
end;

procedure TFrmMain.N4Click(Sender: TObject);
begin
  MaintainTableName := '公司字典';
  Application.CreateForm(TfrmMaintain, frmMaintain);
  frmMaintain.ShowModal;
end;

procedure TFrmMain.N5Click(Sender: TObject);
begin
  MaintainTableName := '联系人字典';
  Application.CreateForm(TfrmMaintain, frmMaintain);
  frmMaintain.ShowModal;
end;

procedure TFrmMain.N6Click(Sender: TObject);
begin
  MaintainTableName := '联系人组别定义字典';
  Application.CreateForm(TfrmMaintain, frmMaintain);
  frmMaintain.ShowModal;
end;

procedure TFrmMain.N8Click(Sender: TObject);
begin
  MaintainTableName := '公司人员表';
  Application.CreateForm(TfrmMaintainVS, frmMaintainVS);
  frmMaintainVS.ShowModal;
end;

procedure TFrmMain.N9Click(Sender: TObject);
begin
  MaintainTableName := '联系人分组表';
  Application.CreateForm(TfrmMaintainVS, frmMaintainVS);
  frmMaintainVS.ShowModal;
end;

procedure TFrmMain.WndProc(var Msg: TMessage);
var
  pt:TPOINT;
begin
  if msg.Msg = WM_TRAYNOTIFY then
  begin
    GetCursorPos(pt);
    case msg.lParam of
      WM_LBUTTONUP:
        begin
          frmMain.Resizing(wsNormal);
          frmMain.Visible := True;
          frmMain.Show;
          //frmMain.BringToFront;
        end;
      WM_RBUTTONUP:
        PopupMenu1.Popup(pt.X, pt.Y);
    end; //end case
    exit;
  end;
  if (msg.Msg = WM_SYSCOMMAND)and(msg.WParam = SC_MINIMIZE) then
  begin
    frmMain.Visible := False;
    exit;
  end;
  //调用父类的WndProc方法处理其它消息
  inherited;
end;

procedure TFrmMain.MenuItem1Click(Sender: TObject);
begin
  frmMain.Resizing(wsNormal);
  frmMain.Visible := True;
  frmMain.Show;
end;

procedure TFrmMain.MenuItem2Click(Sender: TObject);
begin
  frmMain.Close;
end;

procedure TFrmMain.Timer1Timer(Sender: TObject);
var
  s1,s2: string;
begin
  DateTimeToString(s1, 'yyyy-mm-dd hh:nn:ss',now);
  s2 := '';
  case DayOfTheWeek(now) of
    DayMonday: s2:='星期一';
    DayTuesday: s2:='星期二';
    DayWednesday: s2:='星期三';
    DayThursday: s2:='星期四';
    DayFriday: s2:='星期五';
    DaySaturday: s2:='星期六';
    DaySunday: s2:='星期日';
  end;
  StatusBar1.Panels[0].Text := s1 + '  ' + s2;
end;

procedure TFrmMain.Button4Click(Sender: TObject);
begin
  Close;
end;

procedure TFrmMain.Button1Click(Sender: TObject);
var
  sFilter: string;
  bHaveCondition: Boolean;
begin
  bHaveCondition := False;
  if Length(EdtCorpName.Text)>0 then
  begin
    sFilter := sFilter + ' (名称 like ' + QuotedStr('%' + EdtCorpName.Text + '%' ) +  ')';
    bHaveCondition := True;
  end;
  if Length(EdtCorpCity.Text)>0 then
  begin
    if bHaveCondition then sFilter := sFilter + ' and ';
    sFilter := sFilter + ' (城市 like ' + QuotedStr('%' + EdtCorpCity.Text + '%' ) +  ')';
    bHaveCondition := True;
  end;
  if Length(EdtCorpKeywords.Text)>0 then
  begin
    if bHaveCondition then sFilter := sFilter + ' and ';
    sFilter := sFilter + ' (关键词 like ' + QuotedStr('%' + EdtCorpKeywords.Text + '%' ) +  ')';
    bHaveCondition := True;
  end;
  DBGridEh1.DataSource.DataSet.Filtered := False;
  DBGridEh1.DataSource.DataSet.Filter := sFilter;
  DBGridEh1.DataSource.DataSet.Filtered := True;
end;

procedure TFrmMain.DBGridEh1CellClick(Column: TColumnEh);
var
  s, sSQL: string;
begin
  if (DBGridEh1.DataSource.DataSet.RecordCount>0) and
     (not DBGridEh1.DataSource.DataSet.Eof) and
     (Length(DBGridEh1.DataSource.DataSet.FieldByName('公司ID').AsString)>0) then
  begin
    s := DBGridEh1.DataSource.DataSet.FieldByName('公司ID').AsString;
    sSQL := sQHuman + ' where 联系人ID in (select pvg.联系人ID from 公司人员表 pvg, 公司字典 g where pvg.公司ID=g.公司ID and g.公司ID=' + QuotedStr(s) + ')' ;
    DBGridEh2.DataSource.DataSet.Close;
    TADOQuery(DBGridEh2.DataSource.DataSet).SQL.Text := sSQL;
    DBGridEh2.DataSource.DataSet.Open;
  end;
end;

procedure TFrmMain.Button5Click(Sender: TObject);
var
  sFilter, sSQL: string;
begin
  sFilter := ' Where (2>1)';
  if Length(EdtCorpName.Text)>0 then
    sFilter := sFilter + ' and(姓名 like ' + QuotedStr('%' + EdtCorpName.Text + '%' ) +  ')';
  if Length(EdtCorpCity.Text)>0 then
    sFilter := sFilter + ' and(城市 like ' + QuotedStr('%' + EdtCorpCity.Text + '%' ) +  ')';
  if Length(EdtCorpKeywords.Text)>0 then
    sFilter := sFilter + ' and (关键词 like ' + QuotedStr('%' + EdtCorpKeywords.Text + '%' ) +  ')';
  sSQL := sQHuman + sFilter;
  DBGridEh2.DataSource.DataSet.Close;
  TADOQuery(DBGridEh2.DataSource.DataSet).SQL.Text := sSQL;
  DBGridEh2.DataSource.DataSet.Open;
end;

procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Shell_NotifyIcon(NIM_DELETE, @nd);
end;

procedure TFrmMain.DBGridEh2CellClick(Column: TColumnEh);
var
  sTmp: string;
begin
  if DBGridEh2.DataSource.DataSet.RecordCount=0 then exit;
  if (Not DBGridEh2.DataSource.DataSet.Eof) and
     (Length(TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('联系人ID').AsString)>0) then
  begin
    if not TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('姓名').IsNull then
      EdtName.Text := TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('姓名').AsString
    else EdtName.Text := '';
    if not TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('性别').IsNull then
      EdtSex.Text := TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('性别').AsString
    else EdtSex.Text := '';
    if not TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('出生日期').IsNull then
    begin
      DateTimeToString(sTmp, 'yyyy年mm月dd日', TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('出生日期').AsDateTime);
      EdtBirth.Text := sTmp;
    end else EdtBirth.Text := '';
    if not TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('城市').IsNull then
      EdtCity.Text := TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('城市').AsString
    else EdtCity.Text := '';
    if not TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('邮编').IsNull then
      EdtZipcode.Text := TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('邮编').AsString
    else EdtZipcode.Text := '';
    if not TADOQuery(DBGridEh2.DataSource.DataSet).fieldbyname('地址').IsNull then

⌨️ 快捷键说明

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