📄 frind_friends.~pas
字号:
unit Frind_friends;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, RXCtrls, dximctrl, Buttons, jpeg;
type
TFrmFindFriends = class(TForm)
Panel1: TPanel;
Image1: TImage;
GroupBox1: TGroupBox;
RxLabel1: TRxLabel;
FriendsLstBox: TdxImageListBox;
BtnClose: TBitBtn;
BtnAdd: TBitBtn;
BtnReflash: TBitBtn;
// procedure CreateParams(var Params:TCreateParams);override;
procedure BtnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtnReflashClick(Sender: TObject);
procedure BtnAddClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmFindFriends: TFrmFindFriends;
aFndLst:array[0..255] of String;//查找用户时,在线用户返回的信息数组,最大值为256,我想同时在人数应该不会超过这个数吧:-)
implementation
uses dm_share, Var_Share, by_user;
{$R *.dfm}
{procedure TFrmFindFriends.CreateParams(var Params:TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent:=GetDesktopWindow;
end;}
procedure TFrmFindFriends.BtnCloseClick(Sender: TObject);
begin
self.Close;
end;
procedure TFrmFindFriends.FormCreate(Sender: TObject);
begin
Caption:='查找用户';
FriendsLstBox.ImageList:=DMShare.ImgLarge;
// BtnReflash.Click;
end;
procedure TFrmFindFriends.BtnReflashClick(Sender: TObject);
var
MyStream:TMemoryStream;
sMsg:string;
i:integer;
begin
FriendsLstBox.Clear;//清空在线用户列表
for i := 0 to 255 do //清空存放在线用户信息的数组 aFndLst
begin
aFndLst[i]:=''
end;
sMsg:='FIN*';
Mystream := TMemoryStream.Create;
try
DMShare.Udp.LocalPort:=8089;
DMShare.Udp.RemotePort:=8088;
DMShare.Udp.RemoteHost:=GetGBIP(g_sIP);
Mystream.Write(sMsg[1],Length(sMsg));
DMShare.Udp.SendStream(Mystream);
finally
Mystream.Free;
end;
end;
procedure TFrmFindFriends.BtnAddClick(Sender: TObject);
var
s:string;
i,iPos:integer;
aMsg:array[1..4] of string;
begin
//判断是否找到在线用户
if FriendsLstBox.Items.Count=0 then
begin
MessageBox(GetActiveWindow(),'未查找到在线用户,无法添加!','提示',MB_OK+MB_ICONINFORMATION);
Abort;
end;
if FriendsLstBox.ItemIndex=-1 then
begin
MessageBox(GetActiveWindow(),'请先选择要添加的好友!','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
//分解信息
s:=aFndLst[FriendsLstBox.ItemIndex];
for i := 1 to 4 do
begin
iPos:=Pos('*',s);
aMsg[i]:=Copy(s,1,iPos-1);
Delete(s,1,iPos);
// showmessage(aMsg[i]);
end;
//写入好友数据库
with DMShare.TblFriends do
begin
Append;
FieldValues['QQNumber']:=aMsg[1];
FieldValues['UserName']:=aMsg[2];
FieldValues['FaceID']:=StrToInt(aMsg[3]);
FieldValues['IP']:=aMsg[4];
FieldValues['IsBaddy']:=False;
Post;
end;
{以下代码含义:
单击“加为好友”后,在在线用户列表中被选中的用户加为好友,并从在线用户列表
中被删除,并且,要将数组aFndLst中,将上被加好友删除,否则会出现选中的好友
与数组aFndLst中的用户信息对不上号
以下代码还未经过证实,不知是否正确,尚待证}
for i := FriendsLstBox.ItemIndex to FriendsLstBox.Items.Count-FriendsLstBox.ItemIndex-1 do
begin
aFndLst[i]:=aFndLst[i+1];
end;
FriendsLstBox.Items.Delete(FriendsLstBox.ItemIndex);
//将所添加的好友信息写入数组aAddFndLst,以便在“查找好友”窗体关闭后添加进SideBar
(*{ for i := 0 to 255 do
begin
if aAddFndLst[i,0]='' then
begin
} i:=0; aAddFndLst[i,0]:=aMsg[1];
aAddFndLst[i,1]:=aMsg[2];
aAddFndLst[i,2]:=aMsg[3];
// end;
// end;*)
{下面的代码还需验证!!!!!!!!!在多台机器同时在线时验证}
for i := 0 to 255 do
begin
if aAddFndLst[i,0]='' then
begin
aAddFndLst[i,0]:=aMsg[1];
aAddFndLst[i,1]:=aMsg[2];
aAddFndLst[i,2]:=aMsg[3];
Break;
end;
end;
end;
procedure TFrmFindFriends.FormShow(Sender: TObject);
begin
BtnReflash.Click;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -