首先自已定义了一个类,结构如下:
TSelectValue = class
name : string;
value : string;
end;然后在页面上放了个ComboBox1,在FormShow事件里有如下代码:
procedure TForm1.FormShow(Sender: TObject);
var select : TSelectValue;
begin
select := TSelectValue.Create;
select.name := 'aaa';
select.value := '1';
ComboBox1.Items.AddObject(select.name,Select);
select.name := 'bbb';
select.value := '2';
ComboBox1.Items.AddObject(select.name,Select);
end;在ComboBox1的OnChange事件中加入以下代码:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage(TSelectValue(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).value+ ' ' + TSelectValue(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).name);
end;
问题:为什么在ComboBox选项上不管选aaa还是bbb,显示出来的结果始终是最后一条呢??高手帮帮我!
TSelectValue = class
name : string;
value : string;
end;然后在页面上放了个ComboBox1,在FormShow事件里有如下代码:
procedure TForm1.FormShow(Sender: TObject);
var select : TSelectValue;
begin
select := TSelectValue.Create;
select.name := 'aaa';
select.value := '1';
ComboBox1.Items.AddObject(select.name,Select);
select.name := 'bbb';
select.value := '2';
ComboBox1.Items.AddObject(select.name,Select);
end;在ComboBox1的OnChange事件中加入以下代码:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage(TSelectValue(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).value+ ' ' + TSelectValue(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).name);
end;
问题:为什么在ComboBox选项上不管选aaa还是bbb,显示出来的结果始终是最后一条呢??高手帮帮我!
这样写就算我选择的是aaa,显示出来的还是bbb啊?为什么没改变呢?
procedure TForm1.FormShow(Sender: TObject);
var select1,select2 : TSelectValue;
begin
select1 := TSelectValue.Create;
select2 := TSelectValue.Create;
select1.name := 'aaa';
select1.value := '1';
ComboBox1.Items.AddObject(select1.name,Select1);
select2.name := 'bbb';
select2.value := '2';
ComboBox1.Items.AddObject(select2.name,Select2);
end;
这样试试就明白了。
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage(TSelectValue(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).value+ ' ' + TSelectValue(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).name);
end;
procedure TForm1.FormShow(Sender: TObject);
//var select,select2 : TSelectValue;
var sel : array of TSelectValue;
begin
setlength(sel,2);
sel[0] := TSelectValue.Create;
sel[1] := TSelectValue.Create;
sel[0].value := '1';
sel[0].name := 'aaa';
sel[1].value := '2';
sel[1].name := 'bb';
ComboBox1.Items.Clear;
ComboBox1.AddItem(sel[0].name,sel[0]);
ComboBox1.AddItem(sel[1].name,sel[1]);
{select := TSelectValue.Create;
select2 := TSelectValue.Create;
select.name := 'aaa';
select.value := '1';
ComboBox1.Items.AddObject(select.name,select);
select2.name := 'bbb';
select2.value := '2';
ComboBox1.Items.AddObject(select2.name,Select);}
end;这样写是可以的,原来的方法还是不行,我试过的!