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

📄 mainfrm.pas

📁 个用VC编写的仓库管理小系统
💻 PAS
📖 第 1 页 / 共 4 页
字号:
        Sent :=false;
        ID:=Session.Param2;
        frmIndex:=FindFormByID(ID);
        frmChat[frmIndex]:=CreateChatFrm(ID,frmIndex,false);
        frmChat[frmIndex].show;
        if Session.Param5 ='1' then
        begin
          DisplayText(frmChat[frmIndex].BText.Lines,'对方文件传输端口被占,稍后再试...','系统消息');
          SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
        end
        else
        begin
          DisplayText(frmChat[frmIndex].BText.Lines,'对方拒绝接收文件...','系统消息');
          SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
        end;
      end;
    Ord('N')://文件传输失败
    begin
      ID:=Session.Param1;
      frmIndex:=FindFormByID(ID);
      frmChat[frmIndex]:=CreateChatFrm(ID,frmIndex,false);
      frmChat[frmIndex].RzBitBtn4.Enabled :=true;
      DisplayText(frmChat[frmIndex].BText.Lines,'文件传输失败...','系统消息');
      SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
      frmChat[frmIndex].show;
      Receive:=false;
    end;
    Ord('C')://对方已确认要接收文件
      begin
        ID:=Session.Param2;
        frmIndex:=FindFormByID(ID);
        if assigned(frmChat[frmIndex]) then
        begin
          DisplayText(frmChat[frmIndex].BText.Lines,'对方正在接收文件,请不要关闭...','系统消息');
          SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
          frmChat[frmIndex].show;
          frmChat[frmIndex].SendFile ;
        end
        else
        begin
          frmChat[frmIndex]:=CreateChatFrm(Session.Param2,frmIndex,false);
          DisplayText(frmChat[frmIndex].BText.Lines,'文件传输失败...','系统消息');
          SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
          frmChat[frmIndex].show;
          sleep(1);
          frmmain.Send('N',frmmain.myHandle,frmmain.myName,frmmain.myID,Session.Param3,'','','');
          Sent:=false;
        end;
      end;
    Ord('Q')://是否要接收文件
      begin
        if Receive or Sent then
          frmmain.Send('Y',frmmain.myHandle,frmmain.myName,frmmain.myID,Session.Param3,Session.Param4,'1','');
        if (not Receive) and (not Sent) then
        begin
          if MessageBox(0, Pchar(Session.Param1+'有文件传输给你,要接收吗?'), '提示',
            MB_ICONQUESTION or MB_OKCANCEL or MB_DEFBUTTON2)=mrOk then
          begin
            ID:=Session.Param2;
            frmIndex:=FindFormByID(ID);
            frmChat[frmIndex]:=CreateChatFrm(ID,frmIndex,false);
            frmChat[frmIndex].RzBitBtn4.Enabled :=false;
            DisplayText(frmChat[frmIndex].BText.Lines,'正接收文件,请不要关闭...','系统消息');
            SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
            frmChat[frmIndex].show;
            Receive:=true;
            //等窗体创建出来后,再发消息给对方确认
            frmmain.Send('O',frmmain.myHandle,frmmain.myName,Session.Handle,frmmain.myID,'','','');
          end
          else
          begin
            ID:=Session.Param2;
            frmIndex:=FindFormByID(ID);
            if UserInfo^[frmIndex].Logined<>'0' then
              frmmain.Send('Y',frmmain.myHandle,frmmain.myName,frmmain.myID,Session.Param3,Session.Param4,'0','');
          end;
        end;
      end;
    Ord('X')://修改成功
      begin
        Screen.Cursor:=crDefault;
        if Session.Param1 <>'Error' then
          information('修改成功!')
        else
          information('密码错误!')
      end;
    Ord('B')://取得本人信息
      begin
        myName:=Session.Param1;
        mySex:=strtoint(Session.Param4);
        myImgIndex:=strtoint(Session.Param3);
        if Assigned(frmConfig) then
        begin
          frmConfig.edRemark.Text:=Session.Param5;
          frmConfig.UserImageList.ItemIndex :=strtoint(Session.Param3);
          frmConfig.cbSex.ItemIndex :=strtoint(Session.Param4);
          frmConfig.edName.Text:=Session.Param1;
        end;
      end;
    Ord('U'): //取得聊天用户的IP,头象
      begin
        i:=ChatUsersID.IndexOf(Session.Param4);
        if (i>=0) and (i<AllowNumber)  then
        begin
          GPFriend.Items[i].Caption:=Session.Param5;
          GPFriend.Items[i].ImageIndex:=3+byte(strtoint(Session.Handle));
        end;
        StrPCopy(UserInfo^[frmIndex].UserName,Session.Param5);
        StrPCopy(UserInfo^[frmIndex].Sex,Session.Handle);

        frmchat[frmIndex].UserName :=UserInfo^[frmIndex].UserName;
        frmchat[frmIndex].Sex :=strtoint(UserInfo^[frmIndex].Sex);
        frmchat[frmIndex].Caption :=UserInfo^[frmIndex].UserName+'-对话';
        frmchat[frmIndex].LbHost.Update ;
        frmchat[frmIndex].LbHost.Caption :='主机名:'+Session.Param1 ;
        frmchat[frmIndex].LbAddress.Update ;
        frmchat[frmIndex].LbAddress.Caption :='IP地址:'+Session.Param2 ;
        frmchat[frmIndex].Address :=Session.Param2;
        frmchat[frmIndex].lbUser.Update ;
        frmchat[frmIndex].lbUser.Caption:='昵称:'+Session.Param5;
        frmchat[frmIndex].btImage.Update ;
        frmchat[frmIndex].btImage.Images :=ImageList3;
        frmchat[frmIndex].btImage.ImageIndex :=strtoint(Session.Param3);
        frmchat[frmIndex].btImage.DisabledIndex :=strtoint(Session.Param3);
        frmchat[frmIndex].ImageIndex :=frmchat[frmIndex].btImage.ImageIndex;
        frmchat[frmIndex].Remark :=Session.Param6 ;

        if not frmchat[frmIndex].RzBitBtn5.Enabled then
        begin
          frmChat[frmIndex].CreateRussfrm;//如果用户要进行游戏 则要在获得对方信息之后再创建
        end;
      end;

    Ord('T'),Ord('A')://客户交流
      begin
        try
          if Session.Param4='1' then//判断该用户是否还在线
          begin
            ID:=Session.Param3;
            frmIndex:=FindFormByID(ID);
            if not assigned(frmChat[frmIndex]) then
            begin
              Tray1.Animate :=true;
              Timer1.Enabled :=true;
              if FIFOIndex.IndexOf(inttostr(frmIndex))<0 then
                FIFOIndex.Add(inttostr(frmIndex));
              frmChat[frmIndex]:=CreateChatFrm(ID,frmIndex,false);
            end
            else
            begin
              flashwindow(frmChat[frmIndex].handle,true);
            end;

            DisplayText(frmChat[frmIndex].BText.Lines,Session.Param1);
            SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
            if not frmChat[frmIndex].RzBitBtn4.Enabled then
              frmChat[frmIndex].RzBitBtn4.Enabled:=true;

            if InitData.AutoSave then
            begin
              HisText:=read(InitData.Path+'\f'+Session.Param3+'.dat');
              HisText:=trim(HisText+#13+Session.Param1);
              SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
              write(InitData.Path+'\f'+Session.Param3+'.dat',HisText);
            end;

            if InitData.PlayWave then
              sndplaysound(pStrSound,snd_async or snd_Memory);
          end
          else
          begin
            ID:=Session.Param5;
            frmIndex:=FindFormByID(ID);
            if assigned(frmChat[frmIndex]) then
            begin
              DisplayText(frmChat[frmIndex].BText.Lines,frmChat[frmIndex].UserName+'已下线...','系统消息');
              SendMessage(frmChat[frmIndex].BText.Handle,EM_SCROLL,SB_BOTTOM,0);
            end;
          end;
        except
          Send('D',myHandle,'','','','','','');
          raise;
        end;
      end;

    Ord('F')://用户登录失败
      begin
       information(Session.Param1);
       Screen.Cursor :=crDefault;
      end;

    Ord('L')://用户登录成功,取得用户列表
      begin
        Logined:=True;
        myName:=copy(Session.Param5,1,length(Session.Param5)-1);
        mySex:=strtoint(Session.Param5[length(Session.Param5)]);
        myHandle:=Session.Handle;
        Tray1.Hint :='JJYY-'+myName;

        RegIni1.WriteString('UserID',myID,myName);
        if frmLogin<>nil then
          myID:=frmLogin.cbUserID.Text;

        FunHandle:=LoadLibrary('General.dll');
        if FunHandle<>0 then
        begin
          @UserInfoList:=GetProcAddress(FunHandle,'GetUserInfo');
          if @UserInfoList<>nil then
          begin
            new(UserInfo);
            UserInfo:=UserInfoList(RecText^[2],RecText^[3],RecText^[4],RecText^[5],RecText^[7]);
            if RecText^[7]<>'?' then
            begin
              for i:=0 to high(UserInfo^) do
              begin
                ChatUsersID.Add(UserInfo^[i].ID);
                if i<AllowNumber then
                begin
                  GPFriend.Update;
                  x:=GPFriend.Items.Add;
                  with UserInfo^[i] do
                    UpdateUserState(x,UserName,Sex,(Logined='1'));
                end
                else
                begin
                  if i<AllowNumber+1 then
                  begin
                    x:=GPFriend.Items.Add;
                    x.ImageIndex :=-1;
                    x.DisabledIndex :=-1;
                    x.Caption:='更多...';
                    x.OnClick :=MoreClick;
                  end;

                  y:=TCoolItem95.Create(self);
                  UserMenu.Height :=UserMenu.Height +y.Height ;
                  with UserInfo^[i] do
                    UpdateUserMenu(y,UserName,Sex,(Logined='1'));
                  UserMenu.AddItem(y);
                end;
              end;
              setLength(frmChat,high(UserInfo^)+1);
            end;
            FreeLibrary(FunHandle);
          end;
        end;

        if FrmLogin<>nil then
        begin
          FrmLogin.Close ;
          FrmLogin:=nil;
        end;
        RefreshStates;
        Send('B','',frmmain.myID,'','','','','');//取得自己全部信息
      end;

    Ord('E')://用户注册失败
      begin
        information('注册失败!');
        RefreshStates;
      end;

    Ord('S')://用户注册成功
      begin
        Logined:=True;
        myID:=Session.Param1 ;
        RegIni1.WriteString('UserID',myID,myName);
        RefreshStates;
        information('注册成功,你的ID是'+myID+'!');
      end;

    Ord('G'): //其他用户上下线时刷新用户列表
      begin
        if Logined then
        begin
          if Session.Param4<>'2' then//2表示用户为adminstrator添加的,状态为下线
          begin
            if (Session.Param3='1') and (InitData.ShowOnHint) then
              Tray1.ShowBalloonHint('信息',Session.Param1+'已登录!')
            else if (Session.Param3='0') and (InitData.ShowOffHint) then
              Tray1.ShowBalloonHint('信息',Session.Param1+'已下线!');
          end;

          if UserInfo^<>nil then
          begin
            for i:=0 to high(UserInfo^) do
              if strpas(UserInfo^[i].ID)=Session.Param5 then
              begin
                StrPCopy(UserInfo^[i].Logined,Session.Param3);
                StrPCopy(UserInfo^[i].Sex,Session.Param2);
                StrPCopy(Userinfo^[i].Handle,Session.Handle);
                StrPCopy(Userinfo^[i].ID,Session.Param5);
                StrPCopy(UserInfo^[i].UserName,Session.Param1);
                break;
              end;

            if Session.Param4='0' then
              for i:=0 to high(UserInfo^) do
                if ChatUsersID.Strings[i]=Session.Param5 then
                begin
                  if Session.Param3='1' then
                  begin
                    ChatUsersID.Delete(i);//减
                    if i<AllowNumber then
                    begin
                      GPFriend.Update;
                      GPFriend.Items.Delete(i);
                      ChatUsersID.Insert(0,Session.Param5);//加
                      x:=TRZGroupItem(GPFriend.Items.Insert(0));

                      with Session do
                        UpdateUserState(x,Param1,Param2,(Param3='1'));
                    end
                    else
                    begin
                      GPFriend.Update;
                      x:=TRZGroupItem(GPFriend.Items.Insert(0));
                      with Session do
                        UpdateUserState(x,Param1,Param2,(Param3='1'));

                      UserMenu.RemoveItem(i-AllowNumber);
                      ChatUsersID.Insert(0,Session.Param5);//加

                      y:=TCoolItem95.Create(self);
                      with GPFriend.Items[GPFriend.Items.Count-2] do
                        UpDateUserMenu(y,Caption,inttostr(ImageIndex-3),Enabled);
                      UserMenu.InsertItem(0,y);

                      GPFriend.Update;
                      GPFriend.Items.Delete(GPFriend.Items.Count-2);
                    end;
                  end
                  else
                  begin
                    ChatUsersID.Add(Session.Param5);//加
                    if i<AllowNumber then
                    begin
                      if UserMenu.ControlCount>0 then
                      begin
                        y:=TCoolItem95.Create(self);
                        with Session do
                          UpDateUserMenu(y,Param1,Param2,(Param3='1'));
                        UserMenu.AddItem(y);

                        ChatUsersID.Delete(i);//减
                        GPFriend.Update;
                        GPFriend.Items.Delete(i);
                        x:=TRZGroupItem(GPFriend.Items.Insert(GPFriend.Items.Count-1));
                        x.caption:=TCoolItem95(UserMenu.Controls[0]).caption;
                        x.Enabled:=TCoolItem95(UserMenu.Controls[0]).Enabled;
                        if x.Enabled then
                        begin
                          x.ImageIndex:=TCoolItem95(UserMenu.Controls[0]).ImageIndex;
                          x.DisabledIndex:=TCoolItem95(UserMenu.Controls[0]).ImageIndex+9;
                        end
                        else
                        begin
                          x.ImageIndex:=TCoolItem95(UserMenu.Controls[0]).ImageIndex-9;
                          x.DisabledIndex:=TCoolItem95(UserMenu.Controls[0]).ImageIndex;
                        end;
                        UserMenu.RemoveItem(0);
                      end
                      else
                      begin
                        ChatUsersID.Delete(i);//减
                        GPFriend.Update;

⌨️ 快捷键说明

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