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

📄 udxxj.pas

📁 实现短信的收发应用非常的方便,系统很小直接使用不需安装
💻 PAS
字号:
unit Udxxj;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ToolWin, ComCtrls, StdCtrls, ExtCtrls, Buttons, DB,
  DBTables, ADODB;

type
  Tfrmdxxj = class(TForm)
    ToolBar1: TToolBar;
    ImageList1: TImageList;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton8: TToolButton;
    Shape1: TShape;
    Label4: TLabel;
    Shape2: TShape;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    Edit2: TEdit;
    Memo1: TMemo;
    Label3: TLabel;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    Label5: TLabel;
    qth: TADOQuery;
    qdxgl: TADOQuery;
    procedure ToolButton6Click(Sender: TObject);
    procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmdxxj: Tfrmdxxj;
  isedit:string;//如果是编辑则为edit;如果是新建则为new;

implementation
uses utxlxz,udyxz,udb;
{$R *.dfm}

procedure Tfrmdxxj.ToolButton6Click(Sender: TObject);
begin
//如果有内容在编辑则给出提示,否则直接的退出
if ((trim(edit2.text)<>'') and (trim(memo1.text)<>'') and (isedit='edit')) then
  begin
    if application.MessageBox('退出将丢失正在编辑的短信?',':提示:',mb_yesno)=idyes then
      begin
        close;
      end;
  end;
if (((isedit='new')or(isedit='other')) and((trim(edit1.text)<>'') or (trim(edit2.text)<>'') or (trim(memo1.text)<>''))) then
  begin
    if application.MessageBox('退出将丢失正在新建的短信?',':提示:',mb_yesno)=idyes then
      begin
        close;
      end;
  end;
  if ((trim(edit2.text)='') and (trim(edit1.Text)='') and (trim(memo1.text)='')) then
  begin
   close;
  end;

end;

procedure Tfrmdxxj.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
  begin
  releasecapture;
  perform(wm_syscommand,$f012,0);
  end;
end;

procedure Tfrmdxxj.SpeedButton3Click(Sender: TObject);
begin
memo1.Clear;
end;

procedure Tfrmdxxj.SpeedButton1Click(Sender: TObject);
begin
frmtxlxz:=Tfrmtxlxz.Create(nil);
frmtxlxz.Show;
end;

procedure Tfrmdxxj.SpeedButton2Click(Sender: TObject);
begin
frmdyxz:=tfrmdyxz.Create(nil);
frmdyxz.Show;
end;


procedure Tfrmdxxj.ToolButton5Click(Sender: TObject);
var
 instr:string;
 lbs:string;
 a,b:string;
begin
  if (length(trim(edit1.text))>11) then
  begin
  application.MessageBox('您录入的发送人字符过长!',':提示:',mb_ok);
  exit;
  end;
  if (length(trim(edit2.text))>200) then
  begin
  application.MessageBox('您录入的接收人字符过长!',':提示:',mb_ok);
  exit;
  end;
//////在开始位置就去掉有空内容的情况
if ((trim(edit2.text)='') and (trim(memo1.text)='')) then
  begin
    application.MessageBox('您新建的短信信息不完整,请检查!',':提示:',mb_ok);
    exit;
  end;
//////结束空内容的分析
////开始结非法字符的保护
try
if ((trim(edit2.text)<>'') and (trim(memo1.text)<>'')) then
  begin
  //分析发送的类别,看是否是通讯录
  b:=edit2.Text;
  a:=copy(trimleft(b),1,1);
  if a='1' then
    lbs:='0'
    else
    lbs:='1';
  //qdxgl.ParamByName('dt').AsString:=datetimetostr(now);

  instr:='INSERT INTO dxgl(sender,receiver,content,status,senddate,lb)'+
  ' values('''+trim(edit1.text)+''','''+trim(edit2.text)+''','''+trim(memo1.text)+''',' +
  ' 3,:dt,'''+lbs+''') ';
  qdxgl.Close;
  qdxgl.SQL.Clear;
  qdxgl.SQL.Text:=instr;
  qdxgl.Parameters.ParamByName('dt').value:=datetimetostr(now);
  qdxgl.ExecSQL;
  application.MessageBox('短信保存成功!','::提示::',mb_ok);
  //开始清空发送的主界面
  edit1.clear;
  edit2.Clear;
  memo1.clear;
  isedit:='other';
  //结束主界面的的清空
  end
  else
  begin
  application.MessageBox('您的信息不完整请检查!','::提示::',mb_ok);
  end;
 except
  application.MessageBox('短信内容中存在非法字符,请检查!',':提示:',mb_ok);
  exit;
 end;
end;

procedure Tfrmdxxj.ToolButton1Click(Sender: TObject);
var
 instr:string;
 lbs:string;
 a,b:string;
 th:array[0..99] of string;
 thsql:string;
 thi:integer;
 ////
 i,n,m,k:integer;
  s:string;
  c:array[0..20]of string;
begin
 if  (length(trim(edit1.text))>11) then
  begin
  application.MessageBox('您录入的发送人字符过长!',':提示:',mb_ok);
  exit;
  end;
if length(edit2.text)>200 then
begin
application.MessageBox('接收者手机号太长,请检查!',':提示:',Mb_ok);
exit;//如果信息不完整则跳出程序要求它去检查
end;
////开始检验其主要内容是否为空的情况
if ((trim(edit2.text)='')or(trim(memo1.text)='')) then
  begin
    application.MessageBox('您新建的短信信息不完整,请检查!',':提示:',Mb_ok);
    exit;//如果信息不完整则跳出程序要求它去检查
  end;
////结束情况的检验
try
if ((edit2.text<>'') and (memo1.text<>'')) then
  begin
    //开始是否是多个分组的检验
  s:=trim(edit2.Text);
  if pos(',',s)>0 then
    begin
    //分析它的未尾有没有标号,如果没有就给出提示内容不正确;
    if s[length(s)]<>',' then
      begin
      application.MessageBox('您可能丢失了逗号,请检查!',':提示:',Mb_ok);
      exit;//如果信息不完整则跳出程序要求它去检查
      end;
      /////////开始多组的分析
        n:=0;
        m:=1;
        for i:=1 to length(s) do
        begin

          if s[i]=',' then
            begin
              c[n]:=copy(s,m,i-m);
              n:=n+1;
              m:=i+1;
            end;
        end;
        //将c[]数组中的字符串分别进行是否是分组,是否是电话的检测并存入sendsms表中
         for k:=0 to n-1 do
         begin
           //开始分析它c[n]是电话还是分组
           b:=c[k];
           a:=copy(trimleft(b),1,1);
           if a='1' then
           lbs:='0'
           else
           lbs:='1';

           //向来盟的表中写入发待发信息 0:待发,1:已发,2:失败
           if lbs='0' then
           begin
           instr:='INSERT INTO sendsms(sender,receiver,content,status,senddate,lb)'+
           ' values('''+trim(edit1.text)+''','''+c[k]+''','''+trim(memo1.text)+''',' +
           ' 0,:dt,'''+lbs+''') ';
           qdxgl.Close;
           qdxgl.SQL.Clear;
           qdxgl.SQL.Text:=instr;
           //qdxgl.Parameters.ParamByName('dt').value
           qdxgl.Parameters.ParamByName('dt').value:=datetimetostr(now);
           qdxgl.ExecSQL;
           end;
          //完成单个号码的写入;
           if lbs='1' then
           begin
           //在通讯录中查找电话号码放到数组tl[]中;
           thsql:='select txl.telsj from txl,fz where (fz.fzid=txl.fzid) and ((fz.fzname='''+c[k]+''')or(txl.name='''+c[k]+'''))';
           runsql(qth,thsql);
           for thi:=0 to qth.RecordCount-1 do
           begin
           th[thi]:=qth.fieldbyname('telsj').AsString;
           //在这里分个的放入电话
           instr:='INSERT INTO sendsms(sender,receiver,content,status,senddate,lb)'+
           ' values('''+trim(edit1.text)+''',:thhm,'''+trim(memo1.text)+''',' +
           ' 0,:dt,'''+lbs+''') ';
           qdxgl.Close;
           qdxgl.SQL.Clear;
           qdxgl.SQL.Text:=instr;
           qdxgl.Parameters.ParamByName('dt').value:=datetimetostr(now);
           //qdxgl.ParamByName('thhm').AsString:=th[thi];
           qdxgl.Parameters.ParamByName('thhm').value:=th[thi];
           qdxgl.ExecSQL;
           //结束分个的放入
           qth.Next;
           end;
           end;
           //结束分析它是电话还是分组
         end;  //for c[]
        ////////结束多组的分析
        //清空留下的东西
        //.....
        //结束清空
          //application.MessageBox('短信正在发送.....!','::提示::',mb_ok);
         //开始清空发送的主界面
         edit1.clear;
         edit2.Clear;
         memo1.clear;
         isedit:='other';
    end
    else
    begin
  //分析发送的类别,看是否是通讯录
  b:=trim(edit2.Text);
  a:=copy(trimleft(b),1,1);
  if a='1' then
    lbs:='0'
    else
    lbs:='1';

  //向来盟的表中写入发待发信息 0:待发,1:已发,2:失败
  if lbs='0' then
  begin
  instr:='INSERT INTO sendsms(sender,receiver,content,status,senddate,lb)'+
  ' values('''+trim(edit1.text)+''','''+trim(edit2.text)+''','''+trim(memo1.text)+''',' +
  ' 0,:dt,'''+lbs+''') ';
  qdxgl.Close;
  qdxgl.SQL.Clear;
  qdxgl.SQL.Text:=instr;
  qdxgl.Parameters.ParamByName('dt').value:=datetimetostr(now);
  qdxgl.ExecSQL;
  end;
  //完成单个号码的写入;
  if lbs='1' then
  begin
  //在通讯录中查找电话号码放到数组tl[]中;
  thsql:='select txl.telsj from txl,fz where (fz.fzid=txl.fzid) and ((fz.fzname='''+edit2.text+''')or(txl.name='''+edit2.text+'''))';
  runsql(qth,thsql);
  for thi:=0 to qth.RecordCount-1 do
  begin
  th[thi]:=qth.fieldbyname('telsj').AsString;
    //在这里分个的放入电话
        instr:='INSERT INTO sendsms(sender,receiver,content,status,senddate,lb)'+
  ' values('''+trim(edit1.text)+''',:thhm,'''+trim(memo1.text)+''',' +
  ' 0,:dt,'''+lbs+''') ';
        qdxgl.Close;
        qdxgl.SQL.Clear;
        qdxgl.SQL.Text:=instr;
        qdxgl.Parameters.ParamByName('dt').value:=datetimetostr(now);
        qdxgl.Parameters.ParamByName('thhm').value:=th[thi];
        qdxgl.ExecSQL;
    //结束分个的放入
  qth.Next;
  end;
  end;
  //结束来盟表的写
  //application.MessageBox('短信正在发送.....!','::提示::',mb_ok);
  //开始清空发送的主界面
  edit1.clear;
  edit2.Clear;
  memo1.clear;
  isedit:='other';
  //结束主界面的的清空
  end;
  end
  else
  begin
  application.MessageBox('您的信息不完整请检查!','::提示::',mb_ok);
  end;
 except
  application.MessageBox('短信信息中有非法字符,请检查!',':提示:',mb_ok);
  exit;
 end;
end;

procedure Tfrmdxxj.FormCreate(Sender: TObject);
begin
//在新建的时候给一个变量;
isedit:='new';
end;



end.

⌨️ 快捷键说明

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