在《delphi基础教程》中,关于画直线有这样一段描述( 第五章 Delphi图形图像编程(二)):
================================================================
画直线时,用户只有在松开鼠标才能看见直线,对直线的变化不能进行实时观测。这是因为鼠标移动时程序没有进行某种应。Delphi 定义了OnMouseMove 事件来响应鼠标移动。以下代码可使用户随时观测直线的变化: 
  procedure TForm1.FormMouseMove(Sender:Tobject)
begin
Drowto(X,Y);
Moveto(origin);
end. 
origin 是起始点。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这段代码太笼统,无法进行测试。经自己试验,可用下列代码实现:
 
var
  Form1: TForm1;
  nn:boolean;//开关标志,确定是否画线
implementation
{$R *.dfm}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if nn  then  //如果按下鼠标,则在鼠标移动时画线
canvas.lineto(x,y);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
nn:=true;//按下鼠标,置开关为真
canvas.MoveTo(x,y)
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
nn:=false;//松开鼠标,则停画
end;
end.