{$R *.dfm}
//取下一个计算机
procedure TMe_MessageForm.getnextcomputer(index:integer);
begin
if RenYuanList.Items[index].Checked=True then
begin
MyClient.Close;
MyClient.Host:=RenYuanList.Items[index].SubItems[0];
MyClient.Open;
end
else
begin
Index:=Index+1;
ComputerList:=Index;
if Index<=RenYuanList.Items.Count-1 then
getnextcomputer(Index)
else
begin
Memo2.Text:='';
Button1.Enabled:=True;
end;
end;
end;
//初始化
procedure TMe_MessageForm.FormCreate(Sender: TObject);
begin
MyServer.Open;
end;
//作为发送端给目标计算机一个响应
procedure TMe_MessageForm.Button1Click(Sender: TObject);
begin
if RenYuanList.Items.Count<1 then exit;
if Trim(Memo2.Text)='' then
begin
showmessage('请输入提醒内容!');
exit;
end;
ComputerList:=0;
Button1.Enabled:=False;
getnextcomputer(ComputerList);
end;
//连接时
procedure TMe_MessageForm.MyClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
MyString:string;
begin
MyString:='提醒内容:'+Memo2.Text;
MyClient.Socket.SendText(MyString);
ComputerList:=ComputerList+1;
if ComputerList<=RenYuanList.Items.Count-1 then
getnextcomputer(ComputerList)
else
begin
Memo2.Text:='';
Button1.Enabled:=True;
end;
end;
//发生错误
procedure TMe_MessageForm.MyClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
showmessage('网络发生故障,'+RenYuanList.Items[ComputerList].Caption+'不能立即收到通知!');
//取下一个计算机名称
ComputerList:=ComputerList+1;
if ComputerList<=RenYuanList.Items.Count-1 then
getnextcomputer(ComputerList)
else
begin
Memo2.Text:='';
Button1.Enabled:=True;
end;
end;
//取到客户端发送数据
procedure TMe_MessageForm.MyServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
MySoundPath:string;
begin
MySoundPath:=ExtractFilePath(application.exeName)+'Ringin.wav';
sndplaysound(PChar(MySoundPath),SND_ASYNC or SND_LOOP);
showmessage(Socket.ReceiveText);
sndplaysound('c:\',SND_SYNC);
end;
//全选
procedure TMe_MessageForm.RadioButton1Click(Sender: TObject);
var
i:integer;
begin
if RadioButton1.Checked=True then
for i:=0 to RenYuanList.Items.Count-1 do
RenYuanList.Items[i].Checked:=True;
end;
//全清
procedure TMe_MessageForm.RadioButton2Click(Sender: TObject);
var
i:integer;
begin
if RadioButton2.Checked=True then
for i:=0 to renYuanList.Items.Count-1 do
RenYuanList.Items[i].Checked:=False;
end;
procedure TMe_MessageForm.MyClientLookup(Sender: TObject;
Socket: TCustomWinSocket);
begin
//先寻找目标计算机--找不到转下一个计算机
//---------------------------------->>>>>>>>>>>关键在这里如果第一个计算机关机或者不存在的话,就是找不到计算机的话,会直接跳到错误事件,而存在的话,会在连接的时候发生错误,但是对下一个的连接为什么会有影响???
var
Me_MessageForm: TMe_MessageForm;
SendRenID:integer;
SendRenName:string;
implementation
uses Message_DataModule, Message_Login;
var
RenYuanIndex:integer;
ComputerList:integer;
{$R *.dfm}
//取下一个计算机
procedure TMe_MessageForm.getnextcomputer(index:integer);
begin
if RenYuanList.Items[index].Checked=True then
begin
RenYuanIndex:=index;
MyClient.Close;
MyClient.Host:=RenYuanList.Items[index].SubItems[0];
MyClient.Open;
end
else
begin
Index:=Index+1;
ComputerList:=Index;
if Index<=RenYuanList.Items.Count-1 then
getnextcomputer(Index)
else
begin
EditHour.ItemIndex:=0;
EditMinute.ItemIndex:=0;
Memo2.Text:='';
Button1.Enabled:=True;
end;
end;
end;
//初始化
procedure TMe_MessageForm.FormCreate(Sender: TObject);
var
i:integer;
begin
SendRenName:='qqqq';
DateTimePicker1.Date:=Now;
for i:=0 to 59 do
EditMinute.Items.Add(inttostr(i));
EditMinute.ItemIndex:=0;
//做为接受方创建监听
MyServer.Open;
end;
//作为发送端---将数据保存倒数据库中--给目标计算机一个响应
procedure TMe_MessageForm.Button1Click(Sender: TObject);
begin
if RenYuanList.Items.Count<1 then exit;
if Trim(Memo2.Text)='' then
begin
showmessage('请输入提醒内容!');
exit;
end;
ComputerList:=0;
Button1.Enabled:=False;
getnextcomputer(ComputerList);
end;
//连接时
procedure TMe_MessageForm.MyClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
MyYear,MyMonth,MyDay:Word;
MyString:string;
begin
DecodeDate(DateTimePicker1.Date,MyYear,MyMonth,MyDay);
MyString:='目标用户:'+SendRenName;
MyString:=MyString+#13+'提醒时间:'+inttostr(MyYear)+'年'+inttostr(MyMonth)+'月'+inttostr(MyDay)+'日'+EditHour.Text+'点'+EditMinute.Text+'分';
MyString:=MyString+#13+'提醒内容:'+Memo2.Text;
MyClient.Socket.SendText(MyString);
ComputerList:=ComputerList+1;
if ComputerList<=RenYuanList.Items.Count-1 then
getnextcomputer(ComputerList)
else
begin
EditHour.ItemIndex:=0;
EditMinute.ItemIndex:=0;
Memo2.Text:='';
Button1.Enabled:=True;
end;
end;
//发生错误
procedure TMe_MessageForm.MyClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
showmessage('网络发生故障,'+RenYuanList.Items[ComputerList].Caption+'不能立即收到通知!');
//取下一个计算机名称
ComputerList:=ComputerList+1;
if ComputerList<=RenYuanList.Items.Count-1 then
getnextcomputer(ComputerList)
else
begin
EditHour.ItemIndex:=0;
EditMinute.ItemIndex:=0;
Memo2.Text:='';
Button1.Enabled:=True;
end;
end;
//取到客户端发送数据
procedure TMe_MessageForm.MyServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
MySoundPath:string;
begin
MySoundPath:=ExtractFilePath(application.exeName)+'Ringin.wav';
sndplaysound(PChar(MySoundPath),SND_ASYNC or SND_LOOP);
showmessage(Socket.ReceiveText);
sndplaysound('c:\',SND_SYNC);
end;
//全选
procedure TMe_MessageForm.RadioButton1Click(Sender: TObject);
var
i:integer;
begin
if RadioButton1.Checked=True then
for i:=0 to RenYuanList.Items.Count-1 do
RenYuanList.Items[i].Checked:=True;
end;
//全清
procedure TMe_MessageForm.RadioButton2Click(Sender: TObject);
var
i:integer;
begin
if RadioButton2.Checked=True then
for i:=0 to renYuanList.Items.Count-1 do
RenYuanList.Items[i].Checked:=False;
end;
end.