AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Tile-Modus und Gruppierung von List-View-Items (WinXP)

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

Ein Tutorial von MathiasSimmack · begonnen am 2. Mär 2003 · letzter Beitrag vom 29. Jun 2007
 
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Der Tile-Modus

  Alt 2. Mär 2003, 19:59
Der Tile-Modus ist ebenfalls aus dem Explorer bekannt. Man sieht dabei das Icon, und rechts daneben steht der Dateiname, und darunter (abhängig vom Typ) noch zusätzliche Infos. Zur Benutzung müssen wir der List-View erst mitteilen, wie wir uns den Kachelmodus vorstellen. Dazu gibt´s das Record TLVTileViewInfo, das wir am besten im "OnCreate" der Form füllen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  tileview : TLVTileViewInfo; // CommCtrl_Fragment.pas
begin
  // Recordgröße initialisieren
  tileview.cbSize := sizeof(TLVTileViewInfo);

  // was wollen wir beeinflussen? die Anzahl der zusätzlichen Zeilen
  tileview.dwMask := LVTVIM_COLUMNS;

  // die Tiles sollen sich möglichst automatisch anpassen
  tileview.dwFlags := LVTVIF_AUTOSIZE;

  // wie viele zusätzliche Zeilen sollen es denn sein?
  tileview.cLines := 2;

  // und ab damit zur List-View
  ListView_SetTileViewInfo(lv1.Handle,tileview);
end;
Wichtig erscheint mir diese Zeile:
  tileview.cLines := 2; Damit wird der List-View mitgeteilt, wie viele zusätzliche Zeilen im Kachelmodus zu sehen sein sollen. Das bedeutet: zusätzlich zum Itemnamen (TListItem.Caption), der ja sowieso und in jedem Darstellungsmodus angezeigt wird!

Nehmen wir als Beispiel einen kleinen Explorer, der die Dateien des aktuellen Ordners anzeigt. Im Reportmodus zeigt er außerdem in der Spalte #1 die Dateigröße und in Spalte #2 das Datum. Was wir davon im Kachelmodus sehen, hat ursächlich mit diesen Spalten im Reportmodus zu tun.
Anzumerken ist noch, dass der Kachelmodus für jedes Item separat eingestellt werden muss. Das hört sich umständlich an, bietet aber auch den Vorteil, die Ansicht direkt zu beeinflussen. Ich zeige ein Mini-Beispiel aus dem "OnCreate" der Form:
Delphi-Quellcode:
res := FindFirst(ExtractFilePath(paramstr(0)) + '*.*',
  faAnyFile,ds);

while(res = 0) do begin
  if(ds.Attr and faDirectory = 0) then begin
    // wie gehabt, füllen wir die List-View
    lv := lv1.Items.Add;
    lv.Caption := ds.Name;
    lv.ImageIndex := 0;
    lv.SubItems.Add(inttostr(ds.Size) + ' Bytes');
    lv.SubItems.Add(FormatDateTime('',FileDateToDateTime(ds.Time)));

// JETZT KOMMT DER TILE-MODUS -->

    // wir initialisieren das TLVTileInfo-Record
    tile.cbSize := sizeof(TLVTileInfo);

    // welches Item ist´s?
    tile.iItem := lv1.Items.Count - 1;


    // wie viele zusätzliche Zeilen sollen es für
    // dieses spezielle Item sein?
    tile.cColumns := 2;

    // welche Spalten sollen angezeigt werden?
    tile.puColumns := @ca[0];

    // an die List-View übergeben
    ListView_SetTileInfo(lv1.Handle,tile);
  end;

  res := FindNext(ds);
end;
FindClose(ds);
Wichtig hierbei ist diese Anweisung:
    tile.puColumns := @ca[0]; "ca" ist dabei ein Integer-Array, das die Indexwerte der anzuzeigenden Spalten enthält:
Delphi-Quellcode:
var
  ca : array[0..1]of integer = (1,2);
Wenn wir davon ausgehen, dass -wie oben erwähnt!- die erste Spalte die Dateigröße und die zweite das Datum enthält, dann würden wir im Tile-Modus also auch unter dem Dateinamen erst die -größe und dann das Datum sehen. Tauschen wir die Angabe um, etwa
Delphi-Quellcode:
var
  ca : array[0..1]of integer = (2,1);
dann sähen wir erst das Datum und dann die Größe. Abhängig von den Spalten, die ihr im Reportmodus habt (oder generell: falls ihr versteckte Subitems habt, die in keiner Spalte auftauchen!), könnt ihr mit dem Array beeinflussen, was im Tile-Modus zu sehen sein soll.

That's all.

(PS: Fehler mit "Code" vs. "Delphi" im Text gefixt.)
  Mit Zitat antworten Zitat
 

Themen-Optionen Tutorial durchsuchen
Tutorial durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz