rray[0..buffer-1] of char;//定义一个缓冲区,大小为2048字节
temp:integer;
begin
temp:=socket.ReceiveLength;//得到传来数据的长度
panel1.Caption:='正在接收来自'+ipbox.Text+'的图像数据,稍侯……';
bmpmap.WriteBuffer(buf,Socket.ReceiveBuf(buf,temp));把缓冲区的数据写入流
if temp
begin
bmpmap.Position:=0;
ScrollReset;
image.Picture.Bitmap.LoadFromStream(bmpmap);
bmpmap.clear;
panel1.Caption:='图像已经成功的接收!';
end
else Socket.SendText('cut');//否则继续要求传输
end;
在显示图像时,是通过滚动条和图像控件组合使用的,请注意代码
当然,为了让软件更专业,要有托盘图标,这使代码复杂一些,这些功能在本系统中都实现了,请留意源代码。下面给出该系统的源代码:(代码容易看明白,不详细解释了)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
StdCtrls, ExtCtrls, ComCtrls, ScktComp,shellapi, Menus;
const wm_icb=wm_user+1000;
type
TForm1 = class(TForm)
hScrollB: TScrollBar;
vScrollB: TScrollBar;
Label1: TLabel;
ipbox: TComboBox;
RadioGroup1: TRadioGroup;
cuts: TRadioButton;
cloma: TRadioButton;
restart: TRadioButton;
lock: TRadioButton;
unlock: TRadioButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
imPanel: TPanel;
Image: TImage;
Panel1: TPanel;
kz: TClientSocket;
Button4: TButton;
tccd: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure vScrollBChange(Sender: TObject);
procedure hScrollBScroll(Sender:
TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure kzRead(Sender: TObject; Socket: TCustomWinSocket);
procedure kzDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure kzConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure cutsClick(Sender: TObject);
procedure clomaClick(Sender: TObject);
procedure restartClick(Sender: TObject);
procedure lockClick(Sender: TObject);
procedure unlockClick(Sender: TObject);
procedure kzConnecting(Sender: TObject; Socket: TCustomWinSocket);
procedure kzError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ipboxChange(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
Units: TPoint;
myicon:TNotifyicondata;
procedure wmicb(var msg:TMessage);message wm_icb;
procedure ScrollReset;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.DFM}
const
DEF_SCROLL_UNITS = 8;
buffer=2048;
var bmpmap:TMemorystream;
procedure display;
begin
if form1.visible=true then
form1.n1.Caption:='显示(&;D)'
else
form1.n1.Caption:='隐藏(&;H)';
form1.visible:=not form1.visible;
application.ShowMainForm:=form1.visible;
setforegroundwindow(application.handle);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
display;
end;
procedure TForm1.Button3C