listview 在ListView1Edited 时,如果重画listview,就是从库中取记录item.add,cation 重新附值时,总是出现读地址错,而且用断点查看,所有的过程都执行完后才出现的,哪位大侠能帮帮我.
procedure TFormKSGL.ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
begin
if (item.Index<>-1) and (trim(s)<>'') then
begin
SetReName(item.Caption,s);//调用改名函数
end else
if trim(s)='' then
begin
Drawlistview; //重画listview
end;
end;procedure Drawlistview;
var
i:integer;
begin with dm.KSGL do
begin
close;
sql.Clear;
sql.add('select * from ksgl order by ksID');
open;
end; if dm.KSGL.IsEmpty then exit;
formksgl.ListView1.Items.BeginUpdate;
try
formksgl.ListView1.Items.Clear; while not dm.KSGL.eof do
begin
formksgl.listview1.Items.Add ;
formksgl.listview1.Items[formksgl.listview1.Items.Count-1].Caption:=dm.KSGL.fieldbyname('ksname').AsString;
if dm.KSGL.fieldbyname('TFactive').AsBoolean=true then
formksgl.ListView1.Items.Item[formksgl.listview1.Items.Count-1].ImageIndex :=0 else
formksgl.ListView1.Items.Item[formksgl.listview1.Items.Count-1].ImageIndex :=1;
application.ProcessMessages; dm.KSGL.Next;
end; finally
formksgl.ListView1.Items.EndUpdate ;
end;
end;另外我用了XPBarMenu 和dbgrideh ,它们都是处理消息的。不知和它们有没有关系啊。
procedure TFormKSGL.ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
begin
if (item.Index<>-1) and (trim(s)<>'') then
begin
SetReName(item.Caption,s);//调用改名函数
end else
if trim(s)='' then
begin
Drawlistview; //重画listview
end;
end;procedure Drawlistview;
var
i:integer;
begin with dm.KSGL do
begin
close;
sql.Clear;
sql.add('select * from ksgl order by ksID');
open;
end; if dm.KSGL.IsEmpty then exit;
formksgl.ListView1.Items.BeginUpdate;
try
formksgl.ListView1.Items.Clear; while not dm.KSGL.eof do
begin
formksgl.listview1.Items.Add ;
formksgl.listview1.Items[formksgl.listview1.Items.Count-1].Caption:=dm.KSGL.fieldbyname('ksname').AsString;
if dm.KSGL.fieldbyname('TFactive').AsBoolean=true then
formksgl.ListView1.Items.Item[formksgl.listview1.Items.Count-1].ImageIndex :=0 else
formksgl.ListView1.Items.Item[formksgl.listview1.Items.Count-1].ImageIndex :=1;
application.ProcessMessages; dm.KSGL.Next;
end; finally
formksgl.ListView1.Items.EndUpdate ;
end;
end;另外我用了XPBarMenu 和dbgrideh ,它们都是处理消息的。不知和它们有没有关系啊。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货