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

📄 u_web_chat.pas

📁 以前写的一个利用P2P 技术的一个通讯的例子。里面用到了 DBISAM 、INDY 控件。
💻 PAS
字号:
unit U_WEB_CHAT;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ExtCtrls, StdCtrls, TFlatButtonUnit, p2p_public, TFlatEditUnit;

type
   TF_WEB_CHAT = class(TForm)
      MM_CHAT: TMemo;
      PN_CHAT: TPanel;
      MM_LOG: TMemo;
      BN_FH: TFlatButton;
      BN_SEND: TFlatButton;
      procedure BN_FHClick(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      procedure BN_SENDClick(Sender: TObject);
      procedure FormKeyDown(Sender: TObject; var Key: Word;
         Shift: TShiftState);
   private
      { Private declarations }
   public
      { Public declarations }
      procedure Deal_chat(ChatData: TChatData);
   end;

var
   F_WEB_CHAT: TF_WEB_CHAT;

implementation
uses pub_program, ncp, u_web_dm;
var
   m_str: string;
   m_diff: integer;
   m_ToIP, m_ToAcc: string;
   m_ToPORT: Integer;
   ChatDataPackage: TChatDataPackage;
   {$R *.dfm}

procedure TF_WEB_CHAT.BN_FHClick(Sender: TObject);
begin
   close;
end;

procedure TF_WEB_CHAT.FormCreate(Sender: TObject);
begin
   clearall(sender);
   tncp.Create(self);
   m_str := tran_str;
   caption := m_str;
   m_toip := analy_str('ipaddr', m_str);
   m_toacc := analy_str('accno', m_str);
   m_toport := strtoint(getstr(analy_str('port', m_str)));
end;

procedure TF_WEB_CHAT.BN_SENDClick(Sender: TObject);
var
   m_SendMsg: string;
begin
   m_SendMsg := mm_chat.Text;
   if length(m_SendMsg) > 500 then
      begin
         MessageDlg('发送信息不能超过500个字节!', mtinformation, [mbok], 0);
         exit;
      end;
   with ChatDataPackage do
      begin
         Head.MsgType := IntToStr(ChatMsgSign);
         StrPCopy(Body.fromAccount, gstr_MyAcc);
         StrPCopy(Body.toAccount, m_ToAcc);
         StrPCopy(Body.Msg, m_SendMsg);
      end;
   mm_chat.Clear; // .Lines.Clear;
   gint_chatfrm := frm_web_chat;
   showmessage('IP:  ' + m_ToIP + '  Port: ' +inttostr(m_ToPort) + ' Msg: ' + m_SendMsg);
   f_web_dm.id_Udp.SendBuffer(m_ToIP, m_ToPORT, ChatDataPackage, SizeOf(ChatDataPackage));
   bn_send.SetFocus;
end;

procedure TF_WEB_CHAT.Deal_chat(ChatData: TChatData);
var
   s, m_Msg: string;
begin
   s := ChatData.fromAccount;
   m_msg := ChatData.Msg;
   mm_log.Lines.Add(s + '    ' + datetostr(now, 1));
   mm_log.Lines.Add('    ' + m_msg);
   mm_chat.SetFocus;
end;

procedure TF_WEB_CHAT.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
begin
   case key of
      VK_ESCAPE: bn_fhclick(sender);
      VK_RETURN:
         begin
            bn_sendclick(sender);
            postmessage(mm_chat.Handle, wm_keydown, vk_back, vk_back);
         end;
   end;
end;

end.

⌨️ 快捷键说明

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