首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么把ComboBox1内容直接不拷贝给ComboBox2 ? 解决后加到100分。多谢

2012-03-06 
如何把ComboBox1内容直接不拷贝给ComboBox2 ? 解决后加到100分。谢谢。如何把ComboBox1内容直接不拷贝给Comb

如何把ComboBox1内容直接不拷贝给ComboBox2 ? 解决后加到100分。谢谢。
如何把ComboBox1内容直接不拷贝给ComboBox2   ?

下面这样做,它是会拷贝一份的:我只想让他们共享同一份数据就可以了。
ComboBox2-> Items   =   ComboBox1-> Items;

[解决办法]
不知道你要的是不是这样
for(int i=0; i <ComboBox1-> Items-> Count;i++){
ComboBox2-> Items-> Add(ComboBox1-> Items-> Strings[i]);
}
[解决办法]
关注
[解决办法]
关注,这也是一个技巧
[解决办法]
关注,是一种美德
[解决办法]
关注,心有余而力...
[解决办法]
如果是根据itemindex的话来共享的话,很简单,直接写一个函数就行了..类似于
void __fastcall xxxx(int Index)
{
switch Index
{
case 0:
break;
case 1:
break;
......
}
}
[解决办法]
呵呵,和我一样
不过后来搞定了,用了Temp
[解决办法]
不明白,解释一下吧
关注
[解决办法]
不用循环,一条语句就行了,
ComboBox2-> Items-> AddStrings(ComboBox1-> Items);
[解决办法]
应该不行,而且一般也不会慢,不知道你的数据多少,如果真的很多很多,用这个控件我觉得本身就不好。用户操作起来麻烦。
[解决办法]
delete ComboBox2-> FItems;
ComboBox2-> FItems = ComboBox1-> FItems;
如提示说FItems不能访问!自己想办法,或search csdn
[解决办法]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Button2: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
m: TMemoryStream;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i:=1 to 50000 do
ComboBox1.Items.Add( '这是第 '+IntToStr(i)+ '项 ');
m := TMemoryStream.Create;
ComboBox1.Items.SaveToStream( m );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
StartTick,EndTick: DWORD;
begin
StartTick := GetTickCount;
M.Position := 0;
ComboBox2.Items.LoadFromStream( m );
EndTick := GetTickCount;
Memo1.Lines.Add( IntToStr(EndTick-StartTick) );
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
m.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
StartTick,EndTick: DWORD;
begin
StartTick := GetTickCount;
ComboBox2.Items := ComboBox1.Items;
EndTick := GetTickCount;
Memo1.Lines.Add( IntToStr(EndTick-StartTick) );


end;

end.

[解决办法]
我的结果是:

直接赋值是:   1772
通过流赋值是: 3675
[解决办法]
FItems是TCustomCombo类(TComboBox的父类)的私有成员,不能直接访问。

所以楼主的问题,直接将某个ComboBox的Item指向另一个ComboBox的Item,恐怕正常的方法难以实现。

热点排行