一个问题(100分)

  • 主题发起人 主题发起人 精灵
  • 开始时间 开始时间

精灵

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用三个combobox让用户选择某一字段的信息,并且一个combobox的内容是由前一个
combobox所选择的内容决定的,例如,要选择学校里的某一个班,先得选择系,在选专业
然后选班,我把系,专业,班放在三个combobox中.用户先选择系,选了以后,第二个combobox
种的专业也就确定了,以此类推.还请高手们多多指教.
 
看看treeview是怎么做的
做个类似的数据结构就行了
或者用数据库,但是速度就慢多了
 
如果你用的是主从表何不试试三个都用dblookupcombobox?
 
系combobox的onchange中处理专业
专业combobox的onchange中处理班
很简单的
 
用treeview可能行,我这儿选的是一个纪录的某一字段的值,所以用dblookupcombobox
不行,或许我的想法根本不大现实,用Delphi不好实现。
 
如果数据量不是很大的话,可以用ComboBox的,
可以用Query的动态SQl将数据导入Combobox,
比如:
先把系的Combobox的Items填好,程序如下:
with Query1 do begin
close;
sql.text:='select 系名 from 系表 ';//select系表的数据
open;
first;
系Combobox.Items.clear;//清空原来的内容
while not EOF do begin
系Combobox.items.add(query1.fieldbyname('系名').asstring);//逐条添加系名
next;
end;
end;
其他的Combobox让它们空着。
在 系Combobox 的OnChange事件里重新刷新 专业Combobox的内容,
导入当前系的专业名,语法同上面类似;
在专业Combobox的OnChange事件里重新刷新 班级Combobox的内容,
导入当前专业的班级名,语法同上面类似;
我以前也这样做过,但是最大的缺点就是如果记录数量太多,导入花费时间,
会很慢的!
 
procedure TForm1.FormCreate(Sender: TObject);
begin
combobox1.Clear ;
combobox2.Clear ;
combobox3.Clear ;
combobox1.Items.add('系1');
combobox1.Items.add('系2');
......
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if combobox1.Text='系1' then
begin
combobox2.Items.Add('专业1');
combobox2.Items.Add('专业2');
combobox2.Items.Add('专业3');
.....
end;
.....
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
if combobox2.Text='专业1' then
begin
combobox3.Items.Add('班级1');
combobox3.Items.Add('班级2');
combobox3.Items.Add('班级3');
....
end;
.....
end;

end.
 
我做过这样的东西,是用数据库的,其实还是挺简单的。
 
我试过了还行,terry_lzs说的也对,问题结束。
 
后退
顶部