Code:

// declarations from commctrl.h

type

  TLVGROUP = record

    cbSize: UINT;

    mask: UINT;

    pszHeader: LPWSTR;

    cchHeader: Integer;

    pszFooter: LPWSTR;

    cchFooter: Integer;

    iGroupIdL: Integer;

    stateMask: UINT;

    state: UINT;

    uAlign: UINT;

  end;

 

  tagLVITEMA = packed record

    mask: UINT;

    iItem: Integer;

    iSubItem: Integer;

    state: UINT;

    stateMask: UINT;

    pszText: PAnsiChar;

    cchTextMax: Integer;

    iImage: Integer;

    lParam: lParam;

    iIndent: Integer;

    iGroupId: Integer;

    cColumns: UINT;

    puColumns: PUINT;

  end;

  TLVITEMA = tagLVITEMA;

 

const

  LVM_ENABLEGROUPVIEW = LVM_FIRST + 157;

  LVM_MOVEITEMTOGROUP = LVM_FIRST + 154;

  LVM_INSERTGROUP     = LVM_FIRST + 145;

 

  LVIF_GROUPID = $0100;

 

  LVGF_HEADER  = $00000001;

  LVGF_ALIGN   = $00000008;

  LVGF_GROUPID = $00000010;

 

  LVGA_HEADER_LEFT   = $00000001;

  LVGA_HEADER_CENTER = $00000002;

  LVGA_HEADER_RIGHT  = $00000004;

 

 

procedure TForm1.Button1Click(Sender: TObject);

var

  LvGroup: TLVGROUP;

  LvItemA: TLVITEMA;

  ListItem: TListItem;

  I: Byte;

begin

  // Fill listview with random data

Randomize;

  for i := 1 to 10 do

  begin

    ListItem := ListView1.Items.Add;

    ListItem.Caption := IntToStr(Random(100));

  end;

 

  SendMessage(ListView1.Handle, LVM_ENABLEGROUPVIEW, 1, 0);

 

  // Create Group1

FillChar(LvGroup, SizeOf(TLVGROUP), 0);

  with LvGroup do

  begin

    cbSize := SizeOf(TLVGROUP);

    mask := LVGF_HEADER or LVGF_ALIGN or LVGF_GROUPID;

    pszHeader := 'Group 1';

    cchHeader := Length(LvGroup.pszHeader);

    iGroupIdL := 0;

    uAlign := LVGA_HEADER_CENTER;

  end;

  SendMessage(ListView1.Handle, LVM_INSERTGROUP, 0, Longint(@LvGroup));

 

  // Create Group2

FillChar(LvGroup, SizeOf(LvGroup), 0);

  with LvGroup do

  begin

    cbSize := SizeOf(TLVGROUP);

    mask := LVGF_HEADER or LVGF_ALIGN or LVGF_GROUPID;

    pszHeader := 'Group 2';

    cchHeader := Length(LvGroup.pszHeader);

    iGroupIdL := 1;

    uAlign := LVGA_HEADER_LEFT

  end;

  SendMessage(ListView1.Handle, LVM_INSERTGROUP, 1, Longint(@LvGroup));

 

  // Assign items to the groups

for I := 0 to ListView1.Items.Count - 1 do

  begin

    with LvItemA do

    begin

      FillChar(LvItemA, SizeOf(TLvItemA), 0);

      mask := LVIF_GROUPID;

      iItem := I;

      iGroupId := Random(2);

    end;

    SendMessage(ListView1.Handle, LVM_SETITEM, 0, Longint(@LvItemA))

  end;

end;

 

 

 

// XPManifest needed!

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить