你可以参照Delphi的VCL实例来写啊,应该问题不大。比如DBGRID中的TColumns就是一例。
解决方案 »
- Strings.ValueFromIndex[i-1]在Delphi6里怎么写
- 大家帮我看一下这句delphi语句
- 请教一个数据库连接问题,多谢(Missing data provider or data packet)
- 请教高手,为何用WebBrowser浏览网页总是出错?
- 日历控件
- Delphi for .NET preview
- 关于TADOStoredProc的问题!(在线)!!
- 看看大家对这个问题的回答?怎么没有有用的?难道这个问题还解决不了了?
- 有没有办法将一些常用表单封装起来给用户拖控件那样使用?
- to BirdFly 如果是特殊键怎么取ASCII?如:方向键?
- 哪里有object pascal的代码规则?
- 希望各位老鸟,帮个忙:(
做了一个简单的例子,只要生成一个新工程,然后把代码全部覆盖就可以了 。
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
TMyPoint=Class(TCollectionItem)
private
fx:Integer;
fy:Integer;
Public
procedure Paint(Canvas:TCanvas);
procedure Assign(P:TPersistent);Override;
Published
property x:Integer read fx write fx;
property y:Integer read fy write fy;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TMyPoint.Assign(P:TPersistent);
begin
if p is TMyPoint then
begin
fx:=TMyPoint(p).fx;
fy:=TMyPoint(p).fy;
end
else
inherited Assign(p);
end;procedure TMyPoint.Paint(Canvas:TCanvas);
begin
Canvas.Pen.Color :=clRed;
Canvas.Ellipse (fx-2,fy-2,fx+2,fy+2);
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:=x;
P.y:=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属性。
我想你的问题是不是就在这呢?“建立后不能添加”