📄 untmain.~pas
字号:
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 + -