当前位置:主页>销售管理软件> 列表

如何刷新listview显示的内容?

销售管理软件版1楼: 我用listview显示从数据库里获取的数据.现在想让listview能实时更新操作内容.比如我点击删除按钮后,listview可以马上把这掉记录去掉;点击添加按钮后,listview又可以立即把这条新记录显示出来.

我这些控件都放在某一分页里.并且在Tweihu.TabSheet2Show里编写了让listview显示从数据库调用到的数据的代码.因此我想在button.click事件里添加tabsheet2.show;来实现实时更新,但好象无效果.不知道要如何做到呢?

2楼: 今 天怎 么人这么少啊? 如进销存软件破解版

3楼: 你可以定时对列表框进行刷新

4楼: 第二句意思不太明白,你可以在显示listview的时候重新加载数据,最好能看看代码。

5楼: 定时刷新没必要吧?不过刷新的代码是什么呢?

procedure Tweihu.SpeedButton2Click(Sender: TObject);
begin
if radiobutton1.Checked then
begin
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.add(''update 图书信息 set 书名=''''''+edit5.text+'' '''', ''
+''作者=''''''+edit6.text+'''''',''


+''译者=''''''+edit7.text+'''''',''
+''出版社=''''''+edit8.text+'''''', ''
+''类型=''''''+edit9.text+'''''', ''
+''ISBN=''''''+edit10.text+'''''', ''
+''价格=''''''+edit11.text+'''''' ,''
+''页码=''''''+edit15.text+'''''', ''
+''入库时间=''''''+edit16.text+'''''', ''
+''简介=''''''+memo1.text+'''''' ''
+''where 编号=''''''+edit4.text+'''''''');
adoquery1.execsql;
application.MessageBox(''更新成功'',''确认'',0);
clearedit;
memo1.text:='''';
bitbtn1.enabled:=false;
bitbtn2.enabled:=false;
label9.caption:='''';
end
else if radiobutton2.Checked then
begin
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(''delete 图书信息 where 编号=''''''+edit4.text+'''''''');
adoquery1.execsql;
application.MessageBox(''删除成功'',''确认'',0);

edit1.text:='''';
edit4.text:='''';edit5.text:='''';edit6.text:='''';
edit7.text:='''';edit8.text:='''';edit9.text:='''';
edit10.text:='''';edit11.text:='''';edit12.text:='''';
edit13.text:='''';edit14.text:=''''; edit15.text:='''';
memo1.text:='''';
bitbtn1.enabled:=false;
bitbtn2.enabled:=false;
label19.caption:='''';
end
end;
procedure Tweihu.TabSheet2Show(Sender: TObject);
begin
adoquery2.close;
adoquery2.SQL.Clear;
adoquery2.SQL.add(''select count(类型编号) as 最大编号 from 图书类型'');
adoquery2.Open;
max:= trim(adoquery2.fieldbyname(''最大编号'').asstring);
maxnum:=strtoint(max);
maxnum:=maxnum+1;
newnum:=inttostr(maxnum);
if length(newnum)=1 then
edit2.text:=''00''+ newnum;
if length(newnum)=2 then
edit2.text:=''0''+ newnum;
if length(newnum)=3 then
edit2.text:=newnum;
adoquery2.sql.clear;
adoquery2.SQL.add(''select * from 图书类型'');
adoquery2.Open;
while not adoquery2.Eof do
begin
with listview1.Items.add do
begin
caption:=adoquery2.fieldbyname(''类型编号'').AsString;
subitems.add(adoquery2.fieldbyname(''类型名称'').AsString);
subitems.add(adoquery2.fieldbyname(''可借天数'').AsString);
listview1.columns[0].width:=70;
listview1.columns[1].width:=264;
listview1.columns[2].width:=70;
end;
adoquery2.next;
end;
end;

6楼: 可以在数据库更新后触发事件
如添加或修改的操作时有个afterpost事件
删除有个afterdelete事件

销售管理软件版7楼: listview加载5000条以上的数据,慢得象蜗牛

8楼: 刷新的语句是什么?能写两句吗?

9楼: afterpost 和 afterdelete是谁的事件

10楼: 在SpeedButton2Click 事件的最后写
TabSheet2Show(TabSheet2);
不行吗?
还有,在
adoquery2.Open;
while not adoquery2.Eof do
begin
里面,应该加一句:
adoquery2.Open;
listview1.Items.Clear;


while not adoquery2.Eof do
begin

11楼: 多人接受答案了。