请问ListView如何显示表中的数据?

windspout 2004-03-30 10:13:10
我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from book');
open;

// ListView1.Items.Clear;
while not eof do
begin
with ListView1.Items.Add do
begin
caption:=fieldbyname('图书编号').AsString;
subitems.Add(fieldbyname('图书名称').AsString);
subitems.Add(fieldbyname('作者').AsString);
subitems.Add(fieldbyname('出版社').asstring);
end;
next;
end;
close;
end;

end;

运行结果:横着只显示1 2 3 4 5 6 7 8 9 10(我的book表中有10条记录,图书编号是自增的),而且还显示到末尾的时候还换行.请问为什么会这样?
我要的结果是第一行显示字段名,下面显示对应的数据?
请问我该如果做?
...全文
127 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhg0418 2004-03-30
  • 打赏
  • 举报
回复
简单问题:

加一行
ListView1.viewStyle:=vsReport;
windspout 2004-03-30
  • 打赏
  • 举报
回复
渴死的鱼,你的代码和我的代码似乎没多大区别呀?
蓝山,你能不能给段代码啊?就算ListColumn.Caption加上去了,那数据怎么显示啊?
我的要么就是上面我贴的代码,要么就是死循环的代码.不知道怎么回事?
雷水初六 2004-03-30
  • 打赏
  • 举报
回复
你的字段名应该显示到ListView的ListColumn.Caption上(利用fieldcount,fields[i].name依次添加),然后才是添加Item
hanlin2004 2004-03-30
  • 打赏
  • 举报
回复
...
listview1.Items.BeginUpdate;
while not qu_list.Eof do
begin
with listview1 do
begin
tempItem := Items.Add;
tempItem.Caption := qu_list.fieldbyname('name').AsString;
tempItem.SubItems.Add(qu_list.fieldbyname('url').AsString);
tempItem.SubItems.Add(qu_list.fieldbyname('addr').AsString);
tempitem.SubItems.add(qu_list.Fields[0].AsString);
tempitem.ImageIndex := cbx_playid.Items.indexof(qu_list.fieldbyname('playid').asstring);
end;
qu_list.Next;
end;
listview1.Items.EndUpdate;
CloneCenter 2004-03-30
  • 打赏
  • 举报
回复
楼主的方法是正确的,只是缺少了“新手”所说的那一步。
xhg0418 2004-03-30
  • 打赏
  • 举报
回复
楼上的问题用了BeginUpdate/EndUpdata应该可以解决吧
stargazer 2004-03-30
  • 打赏
  • 举报
回复
超过1000你就可以在Listview插入数据时从容地抽根烟了。
stargazer 2004-03-30
  • 打赏
  • 举报
回复
1000以内速度还可以接受
stargazer 2004-03-30
  • 打赏
  • 举报
回复
嘿嘿,ListView插入数据量大的时候速度奇慢……
windspout 2004-03-30
  • 打赏
  • 举报
回复
各位,我的代码没有问题,是我的ListView属性没有设置:
ListView.ViewStyle:=vsReport;
ListView.GridLines:=True;
把我的注释语句取消掉就可以了.
雷水初六 2004-03-30
  • 打赏
  • 举报
回复
当然如新手所说,需要设vsReport
雷水初六 2004-03-30
  • 打赏
  • 举报
回复
代码如下:(不知合不合你的要求)
var
i: integer;
tmpColm: TListColumn;
begin
with self.QrReport do
begin
if active then close;
open;
for i:= 0 to FieldCount -1 do
begin
tmpColm := self.ListView1.Columns.Add;
tmpcolm.Caption := Fields[i].FieldName;
end;
ListView1.Items.Clear;
while not eof do
begin
with ListView1.Items.Add do
begin
caption:=fields[0].AsString;
for i:= 1 to fieldcount -1 do
subitems.Add(fields[i].AsString);
end;
next;
end;
close;
end;
end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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