我在运行时创建一个组件,但是我遇到了一个问题,因为当我创建其中一个组件时,我会更改其中一个组件的属性值,但它似乎也会在另一个组件上更改它。
如何在运行时创建组件,使它们是单独的组件而不是彼此的实例?
好的,这是我用来创建组件的代码。
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实例之间绘制线条。我遇到的问题是;如果我创建两个组件然后添加第三个组件,当我移动第三个组件时,线条将被绘制到那个组件而不是粘到第二个组件。
我上传了我的源文件,我相信很多都没有意义,我的实施可能会很糟糕,但任何帮助都表示赞赏!提前致谢
如果有助于理解代码的用途,它们都是我学校项目的电路仿真器的一部分:s
答案 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声明......
我希望我能帮忙......