Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Grupisanje i listview

[es] :: Pascal / Delphi / Kylix :: Grupisanje i listview

[ Pregleda: 2316 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Wlada

Član broj: 14344
Poruke: 171
*.vdial.verat.net.



Profil

icon Grupisanje i listview26.05.2005. u 14:23 - pre 206 meseci
Kako da uradim grupisanje po nekom kriterijumu u Listview komponenti kao u Microsoft Outlooku 2003?
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net.

Sajt: www.diy-fever.com


+1 Profil

icon Re: Grupisanje i listview26.05.2005. u 20:27 - pre 206 meseci
evo sa torry-ja sta kaze:
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; 

pazi samo sto je ime headera PWideChar a ne obican string
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Grupisanje i listview

[ Pregleda: 2316 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.