【delphi开源代码栏目提醒】:网学会员delphi开源代码为您提供frm_Client.pas参考,解决您在frm_Client.pas学习中工作中的难题,参考学习。
unit frm_Client;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ScktComp,JPEG, XPMan;
Const
CPort = 3000;
type
TFrmCapClient = class(TForm)
SClient: TClientSocket;
GroupBox1: TGroupBox;
ImgCap: TImage;
Panel1: TPanel;
GroupBox2: TGroupBox;
MmStatus: TMemo;
Panel2: TPanel;
BtnConne: TButton;
BtnCap: TButton;
Label1: TLabel;
EDIP: TEdit;
CBxGoon: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure BtnConneClick(Sender: TObject);
procedure SClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure SClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure SClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure SClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure BtnCapClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
BitSize:Integer;
MemStream:TMemoryStream;
startCap:Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
FrmCapClient: TFrmCapClient;
implementation
{$R *.dfm}
procedure TFrmCapClient.FormCreate(Sender: TObject);
begin
SClient.Port:=CPort;
MemStream:=TMemoryStream.Create;
BitSize:=0;
end;
procedure TFrmCapClient.BtnConneClick(Sender: TObject);
begin
if Sclient.Active then
SClient.Active:=False;
SClient.Address:=EDip.Text;
SClient.Active:=true;
end;
procedure TFrmCapClient.SClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
MmStatus.Lines.Add('连接成功!');
end;
procedure TFrmCapClient.SClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
MmStatus.Lines.Add('断开连接!')
end;
procedure TFrmCapClient.SClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
procedure TFrmCapClient.SClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
MyBuffer: array [0..10240] of byte;
MyReceviceLength: integer;
S: string;
MyBmp: TBitmap;
MyJpg: TJpegimage;
begin
mmStatus.Lines.Add('正在接收数据......');
if bitSize = 0 then
begin
S := Socket.ReceiveText;
bitSize := Strtoint(S);
SClient.Socket.SendText('SendReady');
end
else
begin
MyReceviceLength := socket.ReceiveLength;
mmStatus.lines.Add('正在接收数据,数据大小为:' + inttostr(MyReceviceLength));
Socket.ReceiveBuf(MyBuffer, MyReceviceLength);
MemStream.Write(MyBuffer, MyReceviceLength);
if memStream.Size >= bitSize then
begin
memStream.Position := 0;
MyBmp := tbitmap.Create;
MyJpg := tjpegimage.Create;
try
MyJpg.LoadFromStream(memStream);
MyBmp.Assign(MyJpg);
MmStatus.Lines.Add('正在显示图像');
ImgCap.Picture.Bitmap.Assign(MyBmp);
Socket.SendText('TranceOver');
finally
MyBmp.free;
MyJpg.free;
BtnCap.Enabled := true;
if CBxGoon.Checked then
Socket.SendText('CapBitmap');
memStream.Clear;
bitSize := 0;
end;
end;
end;
end;
procedure TFrmCapClient.BtnCapClick(Sender: TObject);
begin
SClient.Socket.SendText('CapBitmap');
StartCap:=true;
end;
procedure TFrmCapClient.FormDestroy(Sender: TObject);
begin
MemStream.Free;
end;
end.