为什么我的combobox会报错?

registry 2006-01-21 08:01:09
for m:=0 to self.ComponentCount-1 do
if self.Components[m].ClassName='TComboBox' then begin
CB := TComboBox(Self.Components[i]);
for j:=0 to adoquery.FieldCount-1 do begin
if trim(adoquery.Fields.Fields[j].DisplayName)='学校' then
cb.ItemIndex:=cb.Items.IndexOfName(adoquery.Fields.Fields[j].DisplayName);
end;
end;

运行到第六行时总说访问了非法内存地址,试了一下问题出在cb.Items.IndexOfName上,不让访问,但为什么呢?如何解决?
...全文
201 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
todouwang 2006-01-22
  • 打赏
  • 举报
回复
cb.ItemIndex不必要你这样赋值的吧?

你要取这个index的话,自己定义个变量了
飞天揽月 2006-01-22
  • 打赏
  • 举报
回复
程序如下写没问题,你参照改一下,不要那个CB 存在

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
Cur: integer;
begin
for i := 0 to Self.ComponentCount - 1 do
begin
if Self.Components[i].ClassName='TComboBox' then
begin
Cur := TComboBox(Self.Components[i]).Items.IndexOf('学校');
TComboBox(Self.Components[i]).ItemIndex := Cur;
end;
end;
end;
forestry98 2006-01-21
  • 打赏
  • 举报
回复
你给出来的代码还会有点少,我估计是这里有问题
if self.Components[m].ClassName='TComboBox' then begin
CB := TComboBox(Self.Components[i]);// <--这里的"i"是不是应该是"m"
ourlin 2006-01-21
  • 打赏
  • 举报
回复
for m:=0 to self.ComponentCount-1 do
if self.Components[m].ClassName='TComboBox' then begin
CB := TComboBox(Self.Components[m]); //请注意:这里不应是 i 吧, 应是m
=============
for j:=0 to adoquery.FieldCount-1 do begin
if trim(adoquery.Fields.Fields[j].DisplayName)='学校' then
cb.ItemIndex:=cb.Items.IndexOfName(adoquery.Fields.Fields[j].DisplayName);
end;
end;

还有一个问题: cb是如何定义的?

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧