TShape
実行時にプログラムでコントロールを作成する方法があるのだろうか。たとえば、100 個の図形を配置する代わりに、それらを非表示にし、プログラムの実行時に表示すると、しばらくすると 100 個の図形を作成できます (5 秒で 5 つの図形、10 秒で 10 個、15 秒で 15 個、など)。 .
3320 次
1 に答える
3
コントロールを使用して描画したりアニメーション化したりしないでください。代わりに、プレーン GDI またはその他の API を使用して手動で描画する必要があります。例については、この例または質問の 1 つからのこの例を参照してください。
とにかく、あなたの質問に対する簡単な答え:TTimer
フォームに a を置き、それを に設定し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.
于 2013-04-27T10:41:36.487 に答える