delphi listbox的问题 急

2024-12-29 12:26:31
推荐回答(4个)
回答1:

1.最后一行掉了个end;
2.倒数第二行那个free有点问题,建议去掉

还有什么问题?

主要是下面一段 我运行时第一次点击listbox里的内容时,有效,但第二次点击就出现错误

肯定是倒数第二行那个free的问题.把free去掉

回答2:

我建议这样操作
TMyObj=class
GAN,
Gao,
GAS,
GAW: String;
end;

--加载List列表
while not adotable1.EOF do
begin
--将数据转换到对象
obj:=TMyObj.Create;
obj.GAN:=adotable1.FieldByName('Gan').AsString
obj.Gao:=.......................Gao...........
obj.GAS:=.......................GAS...........
--将对象增加到list
listbox1.Items.AddObject(obj.Gan, obj);
adotable1.Next;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
obj: TMyObj;
begin
obj := listbox1.Items.Objects[Listbox1.Itemindex] as TMyObj;
edit1.Text := obj.GAN;
edit2.Tetx := obj.GAO;
.....
edit2.Text:=listbox1.Items.Strings[listbox1.itemindex];
obj:=nil;
end;

我这样处理效率很高的,当然,如果你的列表数据过大效率就不怎么样

回答3:

很多解决办法。
用一个最最聪明的办法,不用listbox用一个datagrid代替,只显示一列,然后公用一个数据源就可以了。

你的代码可以这样修改
filter:=' GAN ='+QuotedStr(listbox1.Items.Strings[listbox1.itemindex]);

回答4:

就是最后free的问题.
第一次调用.成功.但最后一步释放掉了
第二次调用的时候,前面都通过FREE释放掉了你再调用.不错才怪了.