我不知道是否有某種方法可以在運行時以編程方式創建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