普京反腐动画:DELPHI7 LISTVIEW控件添加项目问题?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 05:29:42
procedure TForm12.FormCreate(Sender: TObject);
var
i:integer;
tempItem:TListItem;
subItems:TStrings;
begin
if(dm.ADOQuery1.Active) then dm.ADOQuery1.Close;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('select mid,mname,mknowlege from t_manpower where misend=0 ');
dm.ADOQuery1.ExecSQL;
dm.ADOQuery1.Active:=true;
dm.ADOQuery1.First;
for i:=0 to dm.ADOQuery1.RecordCount-1 do
begin
tempItem:=TListItem.Create(listview1.Items);
tempItem.Checked:=false;
tempItem.SubItems.Append('ddd');
tempItem.SubItems.Append(dm.ADOQuery1.Fields[2].AsString);
tempItem.Caption:=trim(dm.ADOQuery1.Fields[1].AsString);
tempItem.SubItems.Append(inttostr(dm.ADOQuery1.Fields[0].AsInteger));
listview1.Items.AddItem(tempItem);
tempItem.Update;
dm.ADOQuery1.Next;
end;

end;
问题:为什么这段代码可以添加一个item,而屏幕却步显示item的caption呢?而只显示了subItem的内容.

我不知道是不是这样, 我一般按Delphi中的示例去做, 以防出问题, 最后的复合语句一般写成:
begin
tempItem := ListView1.Items.Add;
tempItem.Caption := ...;
tempItem.Checked := False;
... ...
end;

后边就不调用ListView1.Items.AddItem和tempItem.Update了. 我一直这么做, 也一直正常

Delphi帮助中的说明
Call Create to instantiate a TListItem object at
runtime. List items added to the list view at design time are created automatically. At runtime, use the Add method of the TListItems object to create a list item and add it to the list view.
调用Create函数来再运行时创建一个TListItem的实例.
ListItmes在设计时加入的项目(item)会被自动创建.
在运行时请使用Add函数来创建list item并把它增加到
list view中

所以了,用tempitem:=ListView1.Add;
不要用tempitem:=TListView1.Create(...);