我不知道是否有某种方法可以在运行时以编程方式创建TShape
控件。例如,保证放置100个形状,隐藏它们并在程序运行时显示它们,可以在一段时间内创建100个形状(5个形状创建5个形状,10个10秒,15个15秒等等) 。是否可以通过编程创建TShape控件?
回答
您应该不是通过使用控件绘制和动画。相反,你应该使用普通的GDI或其他API手动绘制。有关示例,请参见this example或this example from one of your questions。
总之,一个简单的回答你的问题:你的窗体上放置一个TTimer
并设置其Interval
至250
,并写上:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
FShapes: array of TShape;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetLength(FShapes, Length(FShapes) + 1); // Ugly!
FShapes[high(FShapes)] := TShape.Create(Self);
FShapes[high(FShapes)].Parent := Self;
FShapes[high(FShapes)].Width := Random(100);
FShapes[high(FShapes)].Height := Random(100);
FShapes[high(FShapes)].Left := Random(Width - FShapes[high(FShapes)].Width);
FShapes[high(FShapes)].Top := Random(Height - FShapes[high(FShapes)].Height);
FShapes[high(FShapes)].Brush.Color := RGB(Random(255), Random(255), Random(255));
FShapes[high(FShapes)].Shape := TShapeType(random(ord(high(TShapeType))))
end;
end.
好的,但是什么是Fshapes? – user2296565 2013-04-27 10:45:48
@ user2296565:全都在那里。它是表单类的一个私有字段。 – 2013-04-27 10:46:23
好的,谢谢,我明白了 – user2296565 2013-04-27 10:50:49
- 1. 是否可以通过iPhone以编程方式创建.xls文件?
- 2. 是否可以通过Chrome以编程方式创建虚拟MIDI设备?
- 3. 是否可以通过编程方式控制Office消息栏
- 4. 是否可以在.Net 3.5中创建通用控件?
- 5. 是否可以通过编程在iOS中逐帧创建视频?
- 6. 是否可以通过Flash/ActionScript创建Excel文件?
- 7. 什么样的软件库可以通过编程创建photomosaics?
- 8. 是否可以通过HwndHost控件来绘制WPF控件?
- 9. 是否可以通过iPad应用程序编辑.ePub文件?
- 10. 是否可以通过编程方式启用/禁用硬件?
- 11. 是否可以创建可通过配置控制的不同类?
- 12. 只要创建过程,我们是否可以通过编程方式将过程附加到VS?
- 13. 以可编程方式在可可中创建控件
- 14. 是否可以在AutoCad中以编程方式创建标签?
- 15. 是否可以通过编程方式通过API过滤Skype通知?
- 16. 是否可以通过编程添加工作流程修改?
- 17. vb.net以编程方式创建控件
- 18. REALBasic - 以编程方式创建控件
- 19. 通过线程创建控件
- 20. 是否可以创建控制器过滤器?
- 21. 是否可以通过存储过程结果创建“永久”表
- 22. 通过编程创建UINavigationController
- 23. 是否有可能通过事件创建日期以编程方式调用Google分析添加事件
- 24. 是否可以通过图形API创建Facebook地点?
- 25. 是否可以通过自动化创建“访问”宏?
- 26. 是否可以通过ADFS创建新用户?
- 27. 是否可以通过StreamSets Data Collector(SDC)创建Kafka主题?
- 28. 是否可以通过scapy创建HTTP响应
- 29. Couchbase:是否可以通过沙发创建“连接”视图?
- 30. 是否可以通过Azure CLI创建SendGrid帐户?
是这样的:程序TForm.Timer1Timer(发件人:TObject的); begin With Tshape.Create(self)do begin Parent:= self; Left:= xxx end; 结束; ?? – bummi 2013-04-27 10:38:18
是的,类似的东西 – user2296565 2013-04-27 11:35:18
GExperts和CnWizards有按钮可以将任何可视化组件转换为代码。也许这样的问题“如何使VCL组件成为代码”都被认为是重复的... – 2013-04-29 13:28:01