请问如何多个窗口共享一个ComboBox?(100分)

  • 主题发起人 主题发起人 nulk
  • 开始时间 开始时间
N

nulk

Unregistered / Unconfirmed
GUEST, unregistred user!
一窗口中有ComboBox,里面有N多个Items(TStrings),所以打开这窗口要1到2秒时间,
其它窗口也需要显示同一ComboBox,如何共享ComboBox或它的Items,
而不用每打开一个窗都要等?
 
var
s:TStrings;

begin
s:=TStringList.create;
s.assign(form1.combobox1.items);
//使用
s.free;
end;
 
用一个TStringList来存放数据,要用的时候
form1.combobox1.items := s

退出程序的时候(或是所有Form都不用那个Combobox的时候)释放s
 
谢谢两位,无论用Assign或赋值都要复制多一份
我的意思是能不能:只用一个内存区域来存储这个TStrings,使用只用指针方式。
各位再帮一下
 
[red]无论用Assign或赋值都要复制多一份[/red]

Combobox的items就是一个TStringList,而且由他的包装类Combobox来创建,就是说
只要有这个Combobox就有这个items,所以大概只能这样了吧?[?][?][?]
 
多个窗口共享一个ComboBox呢?
 
[purple]一个蛤蟆一张嘴[/purple]
一个TCombobox的实例,只有一个Parent属性和一个Owner属性[gold](靠,一点都不压韵)[/gold]
[:D][:D][:D]
 
其实,combobox里的列表就是TStringList。

为何不想成多个combobox共享一个TStringList?:)
 
修改它的Parent属性
 
比较同意楼上,找个公共窗口,先生成一个Combobox,然后换它的Parent。
 
换parent不是不可以,但只能在单个窗口上用了,多个窗口时。。。[:)]
 
combobox的内容这么多?会不会影响查看的效果?
还有一招,不妨试试,在公共窗体生成好combobox,添入内容,然后向其它窗体的combobox
直接赋值,这样是不是要快一点。当然这样可能只能省掉从其它读取数据的过程。
 
建立一个单独的窗体,然后把其他各个窗体都要用得的内容不仅仅combobox控件的内容
在这个窗体中创建好,然后类似于datamodule 在各个窗口引用,也就会不用每次都计算
这些内容了这样可以节约下来一些时间,和我们宝贵的内存
 
to All:照各位的方法都会慢,[purple]“一个蛤蟆一张嘴”[/purple][:)]
太懒了想用现成的控件。没办法要重写了。
 
接受答案了。
 
后退
顶部