Delphi组件运行时创建

时间:2013-03-06 22:15:01

标签: delphi components

我在运行时创建一个组件,但是我遇到了一个问题,因为当我创建其中一个组件时,我会更改其中一个组件的属性值,但它似乎也会在另一个组件上更改它。

如何在运行时创建组件,使它们是单独的组件而不是彼此的实例?

好的,这是我用来创建组件的代码。

Cell[CellCount]:= TBattery.Create(nil);   
Cell[CellCount].Top := Random(500);    
Cell[CellCount].Left := Random(500);   
Cell[CellCount].Parent := Self;   
Cell[CellCount].ID := CellCount;   
CellCount := CellCount + 1;    

我正在使用GDI图形在多个TBattery实例之间绘制线条。我遇到的问题是;如果我创建两个组件然后添加第三个组件,当我移动第三个组件时,线条将被绘制到那个组件而不是粘到第二个组件。

我上传了我的源文件,我相信很多都没有意义,我的实施可能会很糟糕,但任何帮助都表示赞赏!提前致谢

http://pastebin.com/8WUkT1rw

http://pastebin.com/BpASvc7N

如果有助于理解代码的用途,它们都是我学校项目的电路仿真器的一部分:s

1 个答案:

答案 0 :(得分:0)

创建简单的运行时组件是......

首先创建一个单元 第二个创建一个程序 前

procedure Label_Comp(Location: TWinControl; Text: String; Label_Left,Label_Top,Numofcomp: Integer; NameOwn: string; Label_Autosize,Label_FontBold,Label_Trans: Boolean);

添加var

var
 MyLabel: TsLabel;

然后是程序代码

procedure Label_Comp(Location: TWinControl; Text: String;            
  Label_Left,Label_Top,Numofcomp: Integer; NameOwn: string;                                                               
  Label_Autosize,Label_FontBold,Label_Trans: Boolean);
begin
 MyLabel := TLabel.Create(main);
 MyLabel.Name := 'Label' + NameOwn + IntToStr(Numofcomp);
 MyLabel.Parent := Location;
 MyLabel.Caption := Text;
 MyLabel.Left := Label_Left;
 MyLabel.Top := Label_Top;
 MyLabel.Font.Name := 'Tahoma';
 MyLabel.Font.Size := 8;
 MyLabel.Font.Color := clWindowText;
 MyLabel.AutoSize := Label_Autosize;
 if Label_FontBold = True then
   MyLabel.Font.Style := MyLabel.Font.Style + [fsBold];
 MyLabel.Transparent := Label_Trans;
 MyLabel.Visible := True;
end;

并根据需要从您的程序中调用它 前

for i := 0 to 10 do 
 Label_Comp(main.panelBattery,'Exit',90,24,i,'',True,True,True);

这里的问题是要记住i声明......

我希望我能帮忙......