?? unit1.pas
字號:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, Buttons, ExtCtrls, ScktComp;
type
TForm1 = class(TForm)
Image1: TImage;
SpeedButton1: TSpeedButton;
Memo1: TMemo;
Edit1: TEdit;
ComboBox1: TComboBox;
ListBox1: TListBox;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
Label1: TLabel;
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Label2: TLabel;
Label3: TLabel;
SpeedButton6: TSpeedButton;
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure SpeedButton4Click(Sender: TObject);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure SpeedButton6Click(Sender: TObject);
procedure ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
NickName:string;//其中NickName用于放聊天人的名稱,b_Client用于表明應用程序是否作為客戶端進行數據傳輸
b_Client:boolean;
Form1: TForm1;
OldX,OldY:integer; //定義全局變量
implementation
{$R *.dfm}
procedure TForm1.SpeedButton5Click(Sender: TObject);
var
n:string;
begin
if InputQuery('更改昵稱','新昵稱..',n) then
if Length(n)>0 then
NickName:=n;
label3.Caption:=n;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ClientSocket1.close;
ServerSocket1.close;
close;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
OldX:=x;
OldY:=y;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssleft in shift then //按下鼠標左鍵
begin
Form1.Left:=Form1.Left+x-Oldx;
Form1.Top:=Form1.Top+y-Oldy;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
edit1.SetFocus;
form1.Left:=trunc((screen.Width-form1.Width)/2);
form1.Top:=trunc((screen.Height-form1.Height)/2);
AnimateWindow(handle,100,aw_hor_negative+aw_activate+aw_center);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
NickName:='我的昵稱';
b_Client:=true;
label1.Caption:='小強聊天系統測試版';
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
ClientSocket1.Close;
speedbutton3.Enabled:=false;
speedbutton2.Visible:=false;
speedbutton6.Visible:=true;
ServerSocket1.Open;
label1.Caption:='開始監聽...';
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
var s:string;
begin
if ClientSocket1.Active then
ClientSocket1.Close;
if inputquery('連接到計算機','要連接的計算機IP地址:',s) then
if length(s)>0 then
with ClientSocket1 do
begin
host:=s;
open;
end;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if edit1.Text='' then
begin
label1.Caption:='不能發空消息啊!~~';
end
else
if Key=VK_Return then
begin
Memo1.Lines.Add(NickName+'說:'+Edit1.Text);
if b_Client then
ClientSocket1.Socket.SendText(Memo1.Lines[Memo1.lines.Count-1])
else
ServerSocket1.Socket.Connections[0].SendText(Memo1.Lines[Memo1.lines.Count-1]);
edit1.Text:='';
label1.Caption:='';
end;
end;
procedure TForm1.ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
label1.Caption:='等待連接允許響應...';
end;
procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
b_Client:=false;
clientsocket1.Close;
serversocket1.Open;
label1.Caption:='連接到'+Socket.RemoteAddress;
listbox1.Items.Add(Socket.RemoteAddress);
combobox1.Items.Add(Socket.RemoteAddress);
speedbutton3.Enabled:=false;
NickName:='主機';
label3.Caption:='主機';
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
serversocket1.Close;
clientsocket1.Open;
b_Client:=true;
label1.Caption:='連接成功';
listbox1.Items.Add(Socket.LocalAddress);
speedbutton2.Enabled:=false;
speedbutton3.Enabled:=false;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.lines.Add(Socket.ReceiveText);
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.lines.Add(Socket.ReceiveText);
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
ClientSocket1.close;
listbox1.Clear;
label1.Caption:='斷開連接';
speedbutton2.Enabled:=true;
speedbutton3.Enabled:=true;
speedbutton2.Visible:=true;
speedbutton6.Visible:=false;
if b_Client=false then
ServerSocket1.Close;
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
label1.Caption:='斷開'+Socket.LocalAddress+'的連接';
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
listbox1.Items.Clear;
ClientSocket1.close;
listbox1.Clear;
label1.Caption:='斷開連接';
speedbutton2.Enabled:=true;
speedbutton3.Enabled:=true;
speedbutton2.Visible:=true;
speedbutton6.Visible:=false;
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
ClientSocket1.Close;
speedbutton3.Enabled:=true;
speedbutton2.Visible:=true;
speedbutton6.Visible:=false;
ServerSocket1.Close;
label1.Caption:='';
end;
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.lines.Add(Socket.ReceiveText);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -