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

📄 ammain.pas

📁 用delphi制作的简单的类似qq的聊天客户端
💻 PAS
字号:
unit AMMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, APIPECOMLib_TLB, OleServer, ImgList;

  type TOleEnum = type LongWord;

type
    TForm2 = class(TForm)
    TreeView1: TTreeView;
    AMConsol1: TAMConsol;
    AMSession1: TAMSession;
    AMLoginInfo1: TAMLoginInfo;
    AMSysMsg1: TAMSysMsg;
    ImageList1: TImageList;
    AMMessage1: TAMMessage;
    Label1: TLabel;
    Button1: TButton;
    procedure PreShow(Sender: TObject);
    procedure SignIn(ASender: TObject; State: TOleEnum; nErrCode: Integer);
    procedure DoubleClick(Sender: TObject);
    procedure AMMsgReceive(ASender: TObject; const pMsg: IAMMessage);
    procedure ReceiveNtyMsg(ASender: TObject; const pSMsg: IAMSysMsg);
    procedure AMReceive(ASender: TObject; const pSMsg: IAMSysMsg);
    procedure Button1Click(Sender: TObject);
    procedure ColseQuery(Sender: TObject; var CanClose: Boolean);
    procedure AMSignIn(ASender: TObject; State: TOleEnum;
      const bszLoginName: WideString; nErrCode: Integer);

//    procedure AMMsgReceive(ASender: TObject; const pMsg: IAMMessage);
  private
    { Private declarations }
  public
      arrayUser  :array[0..100] of string ;
      nodeSender : TTreeNode;
  end;

var
  Form2: TForm2;

implementation

uses AMDelphi,SendMessage,ReceiveMessage;


{$R *.dfm}

procedure TForm2.PreShow(Sender: TObject);
begin
  form1.ShowModal;
end;
//--------------------
//处理自己登录信息
//--------------------
procedure TForm2.SignIn(ASender: TObject; State: TOleEnum;
  nErrCode: Integer);
var
nodeTemp :TTreeNode;
begin
  if State = AM_SIGN_IN_OK then
    begin
      AMSession1.ChangeStatus(AM_USERSTATUS_NLN);
      Treeview1.Images := ImageList1;
      nodeTemp := Treeview1.Items.Add(nil, '当前登录用户_我自己' );
      arrayuser[nodeTemp.AbsoluteIndex] :=  AMDelphi.Form1.LoginName ;
      Treeview1.Items[0].ImageIndex :=2;
      Treeview1.Items[0].selectedindex :=2;
    end;
  if State = AM_SIGN_IN_ERR  then
    begin
      Application.MessageBox('failed','Error');
      ShowMessage(AMConsol1.GetErrInfo(nErrCode, 'ENG'));
    end;
end;

procedure TForm2.ReceiveNtyMsg(ASender: TObject; const pSMsg: IAMSysMsg);
var
nodeTemp :TTreeNode;
iamSysMsy  :IAMSysMsg;
//-----------------------
//获得在线人员信息
//-----------------------
begin
  iamSysMsy := pSMsg as IAMSysMsg;
  AMSysMsg1.ConnectTo( iamSysMsy);
  //-----------------------------
  //收到所有在线人员信息
  //-----------------------------
  if AMSysMsg1.Method = 'NLN' then
  begin
    Treeview1.Images := ImageList1;
    nodeTemp := Treeview1.Items.Add(nil, AMSysMsg1.GetParamStr (3) );
    //---------------------------
    //建立用户数组
    //---------------------------
    arrayuser[nodeTemp.AbsoluteIndex] :=  AMSysMsg1.GetParamStr (2);
    Treeview1.Items[nodeTemp.AbsoluteIndex].ImageIndex :=2;
    Treeview1.Items[nodeTemp.AbsoluteIndex].selectedindex :=2;
  end
end;
//-------------------
//获得消息发送对象
//-------------------
procedure TForm2.DoubleClick(Sender: TObject);
begin
  nodeSender:=  TreeView1.Selected;
  SendMessage.Form3.Show ;
  SendMessage.Form3.MEMO1.Text :='';
end;

//----------------------
//服务器消息处理
//----------------------

procedure TForm2.AMReceive(ASender: TObject; const pSMsg: IAMSysMsg);
var

strGetMessage :string;
begin
  if pSMsg.Method='MSG' then
  begin
    strGetMessage := pSMsg.GetParamStr(3);
  end
end;
//------------------
// 收到消息处理
//------------------

procedure TForm2.AMMsgReceive(ASender: TObject; const pMsg: IAMMessage);
var
AMMessagetemp : IAMMessage;
begin
  AMMessagetemp := pMsg as IAMMessage;
  AMMessage1.ConnectTo(AMMessagetemp);
  Receivemessage.Form4.Show ;
  Receivemessage.Form4.Visible := true;
  Receivemessage.Form4.RichEdit1.Text := AMMessage1.GetMsgContent(AMMessage1.MsgContentType);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  AMMain.Form2.Close();
end;

procedure TForm2.ColseQuery(Sender: TObject; var CanClose: Boolean);
begin
  AMMain.Form2.AMSession1.CloseSession();
  AMMain.Form2.AMSession1.Destroy();
end;



procedure TForm2.AMSignIn(ASender: TObject; State: TOleEnum;
  const bszLoginName: WideString; nErrCode: Integer);
var
nodeTemp :TTreeNode;
begin
  if State = AM_SIGN_IN_OK then
    begin
      AMSession1.ChangeStatus(AM_USERSTATUS_NLN);
      Treeview1.Images := ImageList1;
      nodeTemp := Treeview1.Items.Add(nil, '当前登录用户' );
      arrayuser[nodeTemp.AbsoluteIndex] :=  AMDelphi.Form1.LoginName ;
      Treeview1.Items[0].ImageIndex :=2;
      Treeview1.Items[0].selectedindex :=2;
    end;
  if State = AM_SIGN_IN_ERR  then
    begin
      Application.MessageBox('failed','Error');
      ShowMessage(AMConsol1.GetErrInfo(nErrCode, 'ENG'));
    end;
end;

end.

⌨️ 快捷键说明

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