不是我不想回答你,但这确实是我现在写的程序的核心部分,Sorry!

解决方案 »

  1.   

    largewang
      可以告诉我你的类是从哪个基类继承来的吗,告诉一点点想法也不胜感激,我现在很急  
      

  2.   

    以为是什么保密东西,
    一个画点的简单例子,自己再去发展吧。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormPaint(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        List:TCollection;
      end;type
        TMyLine=Class(TCollectionItem)
        private
            fBeginPoint:TPoint;
            fEndPoint:TPoint;
        Public
            procedure Paint(Canvas:TCanvas);
            procedure Assign(P:TPersistent);Override;
        Published
            property BeginPoint:Integer read fBeginPoint write fBeginPoint;
            property EndPoint:Integer read fEndPoint write fEndPoint;
        end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TMyLine.Assign(P:TPersistent);
    begin
            if p is TMyLine then
            begin
                    fBegin:=TMyPoint(p).fBegin;
                    fEnd:=TMyPoint(p).fEnd;
            end
            else
                    inherited Assign(p);
    end;procedure TMyPoint.Paint(Canvas:TCanvas);
    begin
            Canvas.Pen.Color :=clRed;
            Canvas.Moveto(fBegin.X,fBegin.Y);
            Canvas.Lineto(fEnd.X,fEnd.Y);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
         List:=TCollection.Create (TMyPoint);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
         List.Clear ;
         List.Free ;
    end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
       p:TMyPoint;
    begin
         p:=List.Add as TMyPoint;
         p.x:=Point(x,y);     Invalidate;
    end;procedure TForm1.FormPaint(Sender: TObject);
    var
            I:integer;
    begin
         For i:=0 to List.Count -1 do
            TMyPoint(List.Items[i]).Paint(Canvas);
    end;end.
    //看看TCollection的帮助。
      

  3.   

    TCollection是一种很省心的类——感谢Borland
      

  4.   

    如果不想作成CAD,这是一个简单的选择。
      

  5.   

    我也有这个问题。在写工作流程控制时,一个节点到另一个节点可能不只有一条直线的方式连接,中间会有转折点的线。对这条线的路径还可以控制。wk_knife有何高见。
      

  6.   

    wk_knife我重新整理一你写的程序。
    关于当我的老鼠点到这条线。怎样控制这条线。这是个关键问题。
    ben17 你呢?
    有谁知道。------------------
    --下为整理的程序--
    ------------------
    unit LineCalss;interfaceuses
      Classes, Types, Graphics;type
        TMyLine=Class(TCollectionItem)
        private
            fBeginPoint:TPoint;
            fEndPoint:TPoint;
        Public
            procedure Paint(Canvas:TCanvas);
            procedure Assign(P:TPersistent);Override;
        Published
            property BeginPoint:TPoint read fBeginPoint write fBeginPoint;
            property EndPoint:TPoint read fEndPoint write fEndPoint;
        end;implementationprocedure TMyLine.Assign(P:TPersistent);
    begin
      if p is TMyLine then
      begin
        fBeginPoint:=TMyLine(p).BeginPoint;
        fEndPoint:=TMyLine(p).EndPoint;
      end
      else
      inherited Assign(p);
    end;procedure TMyLine.Paint(Canvas:TCanvas);
    begin
      Canvas.Pen.Color :=clRed;
      Canvas.Moveto(fBeginPoint.X,fBeginPoint.Y);
      Canvas.Lineto(fEndPoint.X,fEndPoint.Y);
    end;
    end.
    -----
    unit Lineclasstest;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, LineCalss;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormPaint(Sender: TObject);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
        List:TCollection;
        LineNum:Integer;
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
        LineNum := 0;
        List:=TCollection.Create(TMyLine);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
        List.Clear ;
        List.Free ;
    end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      p:TMyLine;
    begin
        p:=List.Add as TMyLine;
        p.BeginPoint:=Point(x,y);
        Inc(LineNum);
    end;procedure TForm1.FormPaint(Sender: TObject);
    var
      I:integer;
    begin
      For i:=0 to List.Count -1 do
        TMyLine(List.Items[i]).Paint(Canvas);
    end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      TMyLine(List.Items[(LineNum-1)]).EndPoint := Point(x,y);
      Invalidate;
    end;end.
      

  7.   

    http://www.csdn.net/expert/topic/403/403458.shtm
      

  8.   

    先研究一下
    谢了"wk_knife(狼见了也皱眉头——光骨头没肉)"。
      

  9.   

    "wk_knife(狼见了也皱眉头——光骨头没肉)"。
    老兄那里有Demo,我比较笨,需要看Demo才能明白。能不能给我发个例子!!!谢谢你了!
    [email protected]
      

  10.   

    "wk_knife(狼见了也皱眉头——光骨头没肉)"。
    真是不错,我也想要个DEMO,我不是狼,可以吗?
    [email protected]
      

  11.   

    谁有
    CadoDraw.v4.1.for.Delphi.and.BCB.Full.Source.WinAll.Retail-DiSTiNCT.rar
    发一个给我吧!那个下不了了!!感谢!!!to  [email protected]
      

  12.   

    谢谢!"wk_knife(狼见了也皱眉头——光骨头没肉)"。lixiaolei(快乐): 给你个链接,自己下去。
    http://211.152.134.207:1104/control/CadoDraw.v4.1.for.Delphi.and.BCB.Full.Source.WinAll.Retail-DiSTiNCT.rar