加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – TListView中的Sum子项

发布时间:2020-12-15 09:25:26 所属栏目:大数据 来源:网络整理
导读:我们如何在TListView中总结一些SubItem?如果你看下面的图片, 拳头,我们将第1组至第4组填入第1组和第2组.问题是,我们如何将SubItems Col 2相加并将结果放入Col 3.我在上面发布的图片很清楚,但是如果我想解释如何求和,那么你有点将ListView的当前SubItem与上
我们如何在TListView中总结一些SubItem?如果你看下面的图片,

拳头,我们将第1组至第4组填入第1组和第2组.问题是,我们如何将SubItems Col 2相加并将结果放入Col 3.我在上面发布的图片很清楚,但是如果我想解释如何求和,那么你有点将ListView的当前SubItem与上面相加分项.并且,对于每个组中的第一个SubItem,我们将相同的数字放在Col 2中.

解决方法

像这样的东西可能会做你想要的:

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  Value: Integer;
  GroupID: Integer;
  GroupSum: Integer;
begin
  GroupID := 0;
  GroupSum := 0;
  for I := 0 to ListView1.Items.Count - 1 do
  begin
    if Assigned(ListView1.Items[I].SubItems) and
      (ListView1.Items[I].SubItems.Count > 0) and
      TryStrToInt(ListView1.Items[I].SubItems[0],Value) then
    begin
      if GroupID <> ListView1.Items[I].GroupID then
      begin
        GroupSum := 0;
        GroupID := ListView1.Items[I].GroupID;
      end;
      GroupSum := GroupSum + Value;
      if ListView1.Items[I].SubItems.Count < 2 then
        ListView1.Items[I].SubItems.Add(IntToStr(GroupSum))
      else
        ListView1.Items[I].SubItems[1] := IntToStr(GroupSum);
    end;
  end;
end;

那么,对于那些想要模拟OP情况的人来说,这里是一个代码(只需在表单上放置一个列表视图组件并编写事件处理程序):

procedure TForm1.FormCreate(Sender: TObject);
var
  ListItem: TListItem;
  ListGroup: TListGroup;
  ListColumn: TListColumn;
begin
  ListView1.Clear;
  ListView1.GroupView := True;
  ListView1.ViewStyle := vsReport;

  ListColumn := ListView1.Columns.Add;
  ListColumn.Caption := 'Column 1';
  ListColumn.Width := 90;
  ListColumn := ListView1.Columns.Add;
  ListColumn.Caption := 'Column 2';
  ListColumn.Width := 90;
  ListColumn := ListView1.Columns.Add;
  ListColumn.Caption := 'Column 3';
  ListColumn.Width := 90;

  ListGroup := ListView1.Groups.Add;
  ListGroup.GroupID := 0;
  ListGroup.Header := 'Group 1';
  ListGroup := ListView1.Groups.Add;
  ListGroup.GroupID := 1;
  ListGroup.Header := 'Group 2';

  ListItem := ListView1.Items.Add;
  ListItem.GroupID := 0;
  ListItem.Caption := 'Item 1';
  ListItem.SubItems.Add('22');
  ListItem := ListView1.Items.Add;
  ListItem.GroupID := 0;
  ListItem.Caption := 'Item 2';
  ListItem.SubItems.Add('11');
  ListItem := ListView1.Items.Add;
  ListItem.GroupID := 1;
  ListItem.Caption := 'Item 3';
  ListItem.SubItems.Add('94');
  ListItem := ListView1.Items.Add;
  ListItem.GroupID := 1;
  ListItem.Caption := 'Item 4';
  ListItem.SubItems.Add('42');
  ListItem := ListView1.Items.Add;
  ListItem.GroupID := 1;
  ListItem.Caption := 'Item 5';
  ListItem.SubItems.Add('21');
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读