问题描述
listview 是父窗体的列表,我选择添加商品按钮,进入子窗体,然后选择子窗体上的商品,自动添加到父窗体的listview
(说明,不能重复,如果重复在数量上+1)。
父窗体代码
spmx:=tspmx.create(application);
spmx.ShowModal;
子窗体代码Var
  Item: TListItem;
  i,j:integer;
begin
spid:=adodataset1.fieldbyname('cgyid').AsString;
cgyname:=adodataset1.fieldbyname('cgyname').AsString;
dw:=adodataset1.fieldbyname('dw').AsString;
mrjg:=dbgrideh1.Columns[5].DisplayText;
number:='1';
money:=floattostr(strtofloat(mrjg)*strtofloat(number));
//if insaley.listview1.Items.Count=0 then
//begin
//xh:='1';
//end else xh:=inttostr(insaley.listview1.Items.Count+1);
 if insaley.listview1.Items.Count=0 then
   begin
Item:=insaley.ListView1.Items.Add;
//item.Caption:=xh;
Item.SubItems.Add(spid);
Item.SubItems.Add(cgyname);
Item.SubItems.Add(dw);
Item.SubItems.Add(mrjg);
Item.SubItems.Add(number);
Item.SubItems.Add(money);
//list.Visible:=false;
self.Close;
   end else
j:=insaley.listview1.Items.Count;
showmessage(inttostr(j));
   for i := 0 to j - 1 do
        begin
          if insaley.ListView1.Items[i].SubItems.Strings[0] =spid then
          begin
           exit;
           self.close;
          end else
          Item:=insaley.ListView1.Items.Add;
          Item.SubItems.Add(spid);
          Item.SubItems.Add(cgyname);
          Item.SubItems.Add(dw);
          Item.SubItems.Add(mrjg);
          Item.SubItems.Add(number);
          Item.SubItems.Add(money);
          //list.Visible:=false;
          self.Close;end;
但是,如果父窗体有1条数据,可以,有2条以上就还是重复
跟踪一下是insaley.listview1.Items.Count,在程序运行时是读不出数来,但是showmessage就可以,不知道为什么,请各位大侠帮助。

解决方案 »

  1.   

    for i := 0 to j - 1 do
      begin
      if insaley.ListView1.Items[i].SubItems.Strings[0] =spid then
      begin
        insaley.ListView1.Items[i].SubItems[4] := IntToStr(StrToInt(insaley.ListView1.Items[i].SubItems[4]) + 1);  exit;
      self.close;
      end;// else
      Item:=insaley.ListView1.Items.Add;
      Item.SubItems.Add(spid);
      Item.SubItems.Add(cgyname);
      Item.SubItems.Add(dw);
      Item.SubItems.Add(mrjg);
      Item.SubItems.Add(number);
      Item.SubItems.Add(money);
      //list.Visible:=false;
      self.Close;end;