如何在两个PANEL之间画线? ( 积分: 100 )

  • 主题发起人 主题发起人 panbq
  • 开始时间 开始时间
P

panbq

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现在两个PANEL之间画一条直线,并且在拖动PANEL的时候,他们之间的连线会跟着移动,如何实现?
 
我想实现在两个PANEL之间画一条直线,并且在拖动PANEL的时候,他们之间的连线会跟着移动,如何实现?
 
在两个Panel之间加一个TSplitter控件
 
什么啊,这样不是我想要的效果,比如网络拓扑的两个网元,拖动任意一个网元,这两个网元间的连线会跟着移动,想达到这样的效果。
 
哦,误解了
那你可以在任意一个Panel拖动的时候画线呢,
在这两个Panel的Parent的Canvas上面画连接线
 
能否给一段代码示例,我对Canvas完全不懂,写一段代码实现我以上要求,我学习一下,谢谢了。
 
那楼主可以使用TShape控件,呵呵,这么就投机取巧了[:D]
 
强烈要求您给点代码,谢谢。
 
好的,偶试试
无奈中[:(]
 
type
TForm1 = class(TForm)
shapeFrom: TShape;
shapeLine: TShape;
shapeTo: TShape;
procedure FormCreate(Sender: TObject);
procedure shapeFromEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
//简单拖放示例
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept :=True;
end;

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
TControl(Source).Left :=x;
//TControl(Source).Top :=y;
end;

procedure TForm1.shapeFromEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
shapeLine.Left :=shapeFrom.Left +shapeFrom.Width;
shapeLine.Width:=shapeTo.Left -shapeLine.Left;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
shapeFrom.DragMode:=dmAutomatic;
shapeTo.DragMode :=dmAutomatic;
shapeTo.OnEndDrag :=shapeFrom.OnEndDrag;
end;
 
我先试试,谢谢楼上的,这几天过节,耐心点,分是你的了:)
 
不好意思,让dawnsong久等了,这几天有点忙。
 
后退
顶部