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

📄 unit1.pas

📁 聊天室的delphi源代码,需要在delphi7中运行
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NMUDP, Buttons, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Edit1: TEdit;
    ListBox1: TListBox;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    BitBtn1: TBitBtn;
    NMUDP1: TNMUDP;
    procedure Button1Click(Sender: TObject);
    procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ComputerName: array[0..127] of Char;
implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
sz: dword;
begin
sz := SizeOf(Computername);
GetComputerName(ComputerName,sz);//得到本机的标识
ListBox1.Items.Clear;
ListBox1.Items.Add('大家');//在网友清单中,增加”大家”和
ListBox1.Items.Add(ComputerName);//本机名称
ListBox1.ItemIndex:=0;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
MyStream: TMemoryStream;
TmpStr: String;
i:integer;
Begin
if Edit1.Text<>'' then //file://如果所说的内容不为空则发送。
begin
  NMUDP1.ReportLevel := Status_Basic;
  NMUDP1.RemotePort :=8888;//端口为:8888,可以自己定义,但必须与LocalPort相一致。
  if ListBox1.Items[ListBox1.ItemIndex]=ComputerName then
    Edit1.Text:=ComputerName+'自言自语道:'+Edit1.Text //file://如果和自己对话.
  Else
    Edit1.Text:=ComputerName+'对'+ListBox1.Items[listbox1.itemindex]+'说:'+Edit1.Text;
  TmpStr :=Edit1.text;
  MyStream := TMemoryStream.Create;
  try
     MyStream.Write(TmpStr[1],Length(Edit1.Text));
     if ListBox1.ItemIndex=0 then  begin
       for i:=1 to ListBox1.Items.Count-1 do begin //如果选择”大家”,则对所有的网友发送信息
         NMUDP1.RemoteHost :=ListBox1.Items[i];//远程主机的名称或地址.
         NMUDP1.SendStream(MyStream);//发送信息.
       End;
     end
     else begin //如果私聊
        NMUDP1.RemoteHost :=ListBox1.Items[ListBox1.itemindex]; //file://仅对所选中的网友.
        NMUDP1.SendStream(MyStream);
      End;
  finally
    MyStream.Free;
  end;
  Edit1.Text:='';
  Edit1.SetFocus;
end
else
Edit1.SetFocus;
end;
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;NumberBytes: Integer; FromIP:String; Port: Integer);
var
MyStream: TMemoryStream;
TmpStr: String;
begin
MyStream := TMemoryStream.Create;
try
  NMUDP1.ReadStream(MyStream);
  SetLength(TmpStr,NumberBytes);
  MyStream.Read(TmpStr[1],NumberBytes);
  Memo1.Lines.Add(TmpStr);// file://显示对话的内容.
finally
  MyStream.Free;
end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
MyStream: TMemoryStream;
TmpStr: String;
i:integer;
Begin
if (key=#13) and (Edit1.Text<>'') then //file://如果所说的内容不为空,且最后一个按键为”Enter”则发送。
begin
  NMUDP1.ReportLevel := Status_Basic;
  NMUDP1.RemotePort :=8888;
  if ListBox1.Items[ListBox1.ItemIndex]=ComputerName then
    Edit1.Text:=ComputerName+'自言自语道:'+Edit1.Text
  else
    Edit1.Text:=ComputerName+'对'+ListBox1.Items [listbox1.itemindex]+'说:'+Edit1.Text;
  TmpStr :=Edit1.text;
  MyStream := TMemoryStream.Create;
  try
    MyStream.Write(TmpStr[1],Length(Edit1.Text));
    if ListBox1.ItemIndex=0 then begin
      for i:=1 to ListBox1.Items.Count-1 do begin
         NMUDP1.RemoteHost :=ListBox1.Items[i];
         NMUDP1.SendStream(MyStream);
      end;
    end
    else begin
       NMUDP1.RemoteHost :=ListBox1.Items[ListBox1.itemindex];
       NMUDP1.SendStream(MyStream);
    end;
  finally
    MyStream.Free;
  end;
  Edit1.Text:='';
  edit1.SetFocus;
end
else
Edit1.SetFocus;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
InputString:String;
begin //file://增加网友,输入的可以是IP地址或计算机名称。
  InputString:=InputBox('增加人员','IP地址或计算机名','');
  if Inputstring<>'' then ListBox1.Items.Add(Inputstring);
    ListBox1.ItemIndex:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin //file://删除当前选中的网友,但”大家”不能被删除.
if ListBox1.ItemIndex<>0 then 
  ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
end.

⌨️ 快捷键说明

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