unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
lNetComponents, lNet, Types;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
LTCPComponent1: TLTCPComponent;
Shape1: TShape;
Shape2: TShape;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure LTCPComponent1Accept(aSocket: TLSocket);
procedure LTCPComponent1Connect(aSocket: TLSocket);
procedure LTCPComponent1Receive(aSocket: TLSocket);
procedure Timer1Timer(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
var s:string;
started:boolean;
x,y:TLSocket;
buffer:TLSocket;
ptout:Tpoint;
ptin:TPoint;
p:TPoint;
messagein:String;
function PointToString(aPoint: TPoint; aSeparator: Char): String;
begin
Result := Format('%d%s%d', [aPoint.X, aSeparator, aPoint.Y]);
end;
function StringToPointOK(const aString: String; out Point: TPoint;
aSeparator: Char): Boolean;
var p: SizeInt;
begin
Point := Default(TPoint);
p := Pos(aSeparator, aString);
Result := (Length(aString) > 2) and (p > 1);
if Result then
Result := TryStrToInt(Copy(aString, 1, p-1), Point.X) and
TryStrToInt(Copy(aString, p+1, MaxInt), Point.Y);
end;
procedure TForm1.LTCPComponent1Accept(aSocket: TLSocket);
begin
LTCPComponent1.SendMessage('start',buffer);
end;
procedure TForm1.LTCPComponent1Connect(aSocket: TLSocket);
begin
LTCPComponent1.SendMessage('start',buffer);
end;
procedure TForm1.LTCPComponent1Receive(aSocket: TLSocket);
begin
LTCPComponent1.GetMessage(s,buffer);
if s='start' then started:=true;
if started=true then begin
LTCPComponent1.GetMessage(messagein,x);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if started=true then begin
Form1.Shape1.Left:=(p.x)-(Shape1.Width div 2);
Form1.Shape1.Top:=(p.y)-(Shape1.Height div 2);
ptout.x:=Shape1.Left;
ptout.y:=SHape1.Top;
LTCPComponent1.sendmessage(PointToString(ptout,'-'),x);
if StringToPointOK(messagein,ptin,'-') then
begin
Shape2.Top := ptin.Y;
Shape2.Left := ptin.X;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
LTCPComponent1.Host:=Edit1.Text;
LTCPComponent1.Listen(22,'sad');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LTCPComponent1.Connect(Edit1.Text,22);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
p:=ScreenToClient(Mouse.CursorPos);
end;
end.