如何创建一个可以画线段的类 不是我不想回答你,但这确实是我现在写的程序的核心部分,Sorry! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 largewang 可以告诉我你的类是从哪个基类继承来的吗,告诉一点点想法也不胜感激,我现在很急 以为是什么保密东西,一个画点的简单例子,自己再去发展吧。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的帮助。 TCollection是一种很省心的类——感谢Borland 如果不想作成CAD,这是一个简单的选择。 我也有这个问题。在写工作流程控制时,一个节点到另一个节点可能不只有一条直线的方式连接,中间会有转折点的线。对这条线的路径还可以控制。wk_knife有何高见。 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. http://www.csdn.net/expert/topic/403/403458.shtm 先研究一下谢了"wk_knife(狼见了也皱眉头——光骨头没肉)"。 "wk_knife(狼见了也皱眉头——光骨头没肉)"。老兄那里有Demo,我比较笨,需要看Demo才能明白。能不能给我发个例子!!!谢谢你了![email protected] "wk_knife(狼见了也皱眉头——光骨头没肉)"。真是不错,我也想要个DEMO,我不是狼,可以吗?[email protected] 谁有CadoDraw.v4.1.for.Delphi.and.BCB.Full.Source.WinAll.Retail-DiSTiNCT.rar发一个给我吧!那个下不了了!!感谢!!!to [email protected] 谢谢!"wk_knife(狼见了也皱眉头——光骨头没肉)"。lixiaolei(快乐): 给你个链接,自己下去。http://211.152.134.207:1104/control/CadoDraw.v4.1.for.Delphi.and.BCB.Full.Source.WinAll.Retail-DiSTiNCT.rar 关于 .db 文件,请熟悉的人士请进!!! 阻塞式的INDY如何解决线程关闭超时程序无法退出??? 能够在DBGRID用鼠标一下拉动后选拔中标多行吗?? DELPHI的打印控制问题 导出到excel 看的见光芒的地方——给我程序员的未来老公 OleContainer打开word或excel如何判断word被修改过,我在线等到11:55,谢谢大家 准备学delphi shortstring 疑问 帮帮我看看吧,这个套打的问题 怎样给报表的页面加编号? 将一张表的所有记录,导如到以存在的表中,用adocommand怎么实现,要不要执行后用ADOTABLE.POST
可以告诉我你的类是从哪个基类继承来的吗,告诉一点点想法也不胜感激,我现在很急
一个画点的简单例子,自己再去发展吧。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的帮助。
关于当我的老鼠点到这条线。怎样控制这条线。这是个关键问题。
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.
谢了"wk_knife(狼见了也皱眉头——光骨头没肉)"。
老兄那里有Demo,我比较笨,需要看Demo才能明白。能不能给我发个例子!!!谢谢你了!
[email protected]
真是不错,我也想要个DEMO,我不是狼,可以吗?
[email protected]
CadoDraw.v4.1.for.Delphi.and.BCB.Full.Source.WinAll.Retail-DiSTiNCT.rar
发一个给我吧!那个下不了了!!感谢!!!to [email protected]
http://211.152.134.207:1104/control/CadoDraw.v4.1.for.Delphi.and.BCB.Full.Source.WinAll.Retail-DiSTiNCT.rar