procedure TForm1.DrawLine(Index:Integer);
begin
with Canvas,LineArray[Index] do
begin
Pen.Color:=Color;
MoveTo(x1,y1);
LineTo(x2,y2);
end;
end;
procedure TForm1.EraseLine(Index:Integer);
begin
with Canvas,LineArray[Index] do
begin
Pen.Color:=GetBKColor(Handle);
MoveTo(x1,y1);
LineTo(x2,y2);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I:Integer;
begin
Dragging:=False;
for i:=0 to maxIndex - 1 do
begin
with LineArray[I] do
begin
x1:=Random(120+I*30);
x2:=Random(152+I*30);
y1:=Random(240+I*30);
y2:=Random(382+I*30);
Color:=RGB(Random(256),Random(256),Random(256));
end;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
var
I:Integer;
begin
for I:=0 to maxIndex - 1 do
begin
with LineArray[I] do
CreateLabel(I,x1,x2,y1,y2);
DrawLine(I);
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
I:Integer;
begin
for I:=0 to maxIndex - 1 do
if Sender=LineLabel[I] then
begin
XOldSet:=X;
YOldSet:=Y;
LabelIndex:=I;
break;
end;
Dragging:=True;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Dragging then
begin
with LineArray[LabelIndex],LineLabel[LabelIndex] do
begin
Left:=x2+(X - XOldSet);
TOP:=Y2+(Y - YOldSet);
EraseLine(LabelIndex);
x1:=x1+(X - XOldSet);
x2:=x2+(X - XOldSet);
y1:=y1+(Y - YOldSet);
y2:=y2+(Y - YOldSet);
DrawLine(LabelIndex);
LineLabel[LabelIndex].Caption:='X1:'+IntToStr(x1)+',Y1:'+IntToStr(y1)+',X2:'
+IntToStr(x2)+',Y2:'+IntToStr(y2);
end;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Dragging:=False;
with LineArray[LabelIndex] do
begin
x1:=x1+(X - XOldSet);
x2:=x2+(X - XOldSet);
y1:=y1+(Y - YOldSet);
y2:=y2+(Y - YOldSet);
end;
end;