delphi:如何用combobox分级读取数据库中的字段内容
我想要实现以下功能:数据表结构如下编号名称01a011b012c02d021e022f03g以此类推,也就是编号01的a下有若干小项,其编号是01*,02也如此,我实现了...
我想要实现以下功能:数据表结构如下
编号 名称
01 a
011 b
012 c
02 d
021 e
022 f
03 g
以此类推,也就是编号01的a下有若干小项,其编号是01*,02也如此,我实现了用combobox1从数据表中把第一级读取出来,但是combobox1种若选择了01,我希望在combobox2中显示01的几个小项,也就是编号是011,012的项,如何才能实现编号的匹配,在combobox1中内容的编号为01时,combobox2显示编号为01*的内容,该怎么写代码
但是我在combobox中显示的并不是编号,而是名称,编号只是用来识别,我是这样读取第一级的:在数据表中专门有一列是用来区分类别的,还有一列是表示第几级,用类别和第几级这样的组合可以把第一级读取出来,但到了第二级,就不能这样组合了,就得用编号来匹配了 展开
编号 名称
01 a
011 b
012 c
02 d
021 e
022 f
03 g
以此类推,也就是编号01的a下有若干小项,其编号是01*,02也如此,我实现了用combobox1从数据表中把第一级读取出来,但是combobox1种若选择了01,我希望在combobox2中显示01的几个小项,也就是编号是011,012的项,如何才能实现编号的匹配,在combobox1中内容的编号为01时,combobox2显示编号为01*的内容,该怎么写代码
但是我在combobox中显示的并不是编号,而是名称,编号只是用来识别,我是这样读取第一级的:在数据表中专门有一列是用来区分类别的,还有一列是表示第几级,用类别和第几级这样的组合可以把第一级读取出来,但到了第二级,就不能这样组合了,就得用编号来匹配了 展开
1个回答
展开全部
我不知道你是使用什么方法把你指的第一级给取出来的,不过我也做了一个程序(按照你的题意),我使用的是Tstirngs类型(str:Tstrings 全局变量):
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
str := tstringlist.Create;
query1.Open;
query1.First;
while not query1.Eof do
begin
str.Add(query1.fieldbyname('id').AsString);
query1.Next;
end;
for i := 0 to str.Count - 1 do
begin
if length(str[i]) = 2 then//当长度为2时即看做第一级
combobox1.Items.Add(str[i]);
end;
end;
在显示小项时,也使用这个str:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i : integer;
begin
combobox2.Items.Clear;
for i := 0 to str.Count - 1 do
begin
if (pos(combobox1.Items[combobox1.itemindex],str[i])<> 0) and (length(str[i])<>2) then
//当str里含有第一级,并且长度不等于2时,combobox2中添加
combobox2.Items.Add(str[i]);
end;
可做参考哦~~
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
str := tstringlist.Create;
query1.Open;
query1.First;
while not query1.Eof do
begin
str.Add(query1.fieldbyname('id').AsString);
query1.Next;
end;
for i := 0 to str.Count - 1 do
begin
if length(str[i]) = 2 then//当长度为2时即看做第一级
combobox1.Items.Add(str[i]);
end;
end;
在显示小项时,也使用这个str:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i : integer;
begin
combobox2.Items.Clear;
for i := 0 to str.Count - 1 do
begin
if (pos(combobox1.Items[combobox1.itemindex],str[i])<> 0) and (length(str[i])<>2) then
//当str里含有第一级,并且长度不等于2时,combobox2中添加
combobox2.Items.Add(str[i]);
end;
可做参考哦~~
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询