请问怎么用语言将一个组件的属性完全赋给另一个组件啊(5分)

  • 主题发起人 主题发起人 serenesky
  • 开始时间 开始时间
S

serenesky

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说有两个listbox :listbox1和listbox2,我对其中listbox1的属性,
包括事件都已经做好了
而listbox2的属性和事件与listbox1完全一样
请问怎么用语句实现这一功能呢
我用 listbox2.assign(listbox1)
但是不行啊
 
所有属性?
只有在非运行状态的属性才可以用assign赋值 ^_^
 
同意,你可以用控件数组也可以达到你的目的
 
run_time的时候应该不能运行assign
可以说的具体一些吗
张无忌,你也可以说的具体一点吗
 
你要用到流操作。
DELPHI的帮助文件中关于TStream的描述中,有个例子。

function ComponentToString(Component: TComponent): string;

var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result:= StrStream.DataString;
finally
StrStream.Free;

end;
finally
BinStream.Free
end;
end;

function StringToComponent(Value: string): TComponent;
var
StrStream:TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(nil);

finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;

基本上你可以使用这个例子完成你的工作。
但有一点要声明:如果你要把A的属性赋给B,则A 的属性要显式地声明。
否则,你在使用ComponentToString存储关于A属性的字符串时,将得到空。
所以,也就不能正确完成StringToComponent的操作。


 
var
List:array[1..count]of Tlistbox;
begin

ListBox:=Listbox2
//先把控件数组和已存在的控件进行关联
ListBox.一个属性=你的标准listbox的对应属性
这样就可以了,对于什么事件啊,都可以关联,就是麻烦了点
 
后退
顶部