我是想用ListView来显示数据库数据,我希望通过getbook得到当前记录
在添加按钮中:  AdodatasetStudent_1.Insert ;
在提交按钮中:  ListItem := ListView1.Items.Add;
                ListItem.Caption := AdodatasetStudent_1.FieldValues['学号'];
                ListItem.SubItems.Add(AdodatasetStudent_1.FieldValues['姓名']);
                ListItem.SubItems.Add(AdodatasetStudent_1.FieldValues['性别']);
                ListItem.Data := AdodatasetStudent_1.GetBook;//结果
                经过测试AdodatasetStudent_1.GetBook为nil为什么,如何
                得到当前记录行
                AdodatasetStudent_1.Post;
//ListView的SelectItem事件,我是想当鼠标点击新增加的这条记录的时候能够在
DBEidt控件里边显示出来,也就是说能找到当前的book,但是实际上得到的是nil
难道新增的得不到book,那么如何得到当前记录在DBEdit上显示呢?
procedure TFrmStudent_1.ListView1SelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
var
    StudentKey:^OnekeyRec;
    StuDentNum:integer;
begin
  inherited;
  if selected then
  begin
        AdoStudent_1.GotoBook(Listview1.Selected.Data);
  end
  else
  begin
        AdoStudent_1.GotoBook(NIl);
        ClearRec;
        UpdateDate(False);
  end;
end;

解决方案 »

  1.   

    先把它post了再添加到listview吧不管是不是这个原因这样做都比较好最好是写在afterpost事件内
      

  2.   

    谢谢你的答案分数肯定是要给的,
    但是为什么写在afterpost里比较好呢,
    因为我的post是写在提交按钮里的,而这个按钮还要做更新的的事件
      

  3.   

    为什么在afterpost里面写因为这样做有保证保证post以后肯定会刷新listview的说不定你以后有别的地方触发了post,也会把数据写到listview里面去当然如果你有特别的需求例外