Einzelnen Beitrag anzeigen

Experience1986

Registriert seit: 7. Sep 2003
Ort: 66333 Völklingen
22 Beiträge
 
Delphi 7 Personal
 
#9

Re: Tile-Modus und Gruppierung von List-View-Items (WinXP)

  Alt 3. Feb 2006, 10:02
Hi,

Ich habe das nun mal Versucht in Delphi 7 mit XPMan Komponente und VCL umzusetzen. Das Hervorheben von Spalten funktioniert wunderbar. Allerdings die Gruppenansicht verweigert komplett die Darstellung.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
    group:TLVGroup;
    lvItem: TLVItem60;
begin SetLength(dataset, 0);
  for i:=0 to 99 do
    begin
      SetLength(dataset, length(dataset)+1);

      dataset[length(dataset)-1].Name:='Wert '+inttostr(i+1);
      dataset[length(dataset)-1].Value:=AValue(random(10)+10, 0);
      dataset[length(dataset)-1].Mode:=random(2)+1;
    end;
  lv.Items.Count:=length(Dataset);

  // Spalte Name Grau hinterlegen
  ListView_SetSelectedColumn(lv.Handle,1);

  // Gruppen "Modus 1" anlegen
  group.cbSize := sizeof(TLVGroup);
  group.mask := LVGF_HEADER or LVGF_GROUPID;
  group.pszHeader := pwidechar(widestring('Modus 1'));
  group.cchHeader := lstrlenW('Modus 1');
  group.iGroupId := 1;
  ListView_InsertGroup(lv.Handle,-1,group); // Gruppe speichern

  // Items den Gruppen zuordnen
  for i := 0 to lv.Items.Count - 1 do
    begin
      // Record leeren
      ZeroMemory(@lvItem,sizeof(TLVItem60));

      // Flag setzen, weil wir die Gruppen-ID ändern wollen
      lvItem.mask := LVIF_GROUPID;

      // von welchem Item?
      lvItem.iItem := i;

      if Dataset[i].Mode = 1 then
        begin// wie lautet die ID?
      lvItem.iGroupId := Dataset[i].Mode; end;

      // und ab dafür
      SendMessage(lv.Handle,LVM_SETITEM,0,LPARAM(@lvItem));
    end;
  // Gruppen aktivieren
  ListView_EnableGroupView(lv.Handle, true);

  lv.Repaint;
end;


Gibt es dafür einen Grund?

Vielen Dank schonmal für jede Antwort. Suche schon ewig nach dieser Darstellungsart.
  Mit Zitat antworten Zitat