AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listview ein Image aus ImageList zuweisen

Ein Thema von ereetzer · begonnen am 4. Aug 2011 · letzter Beitrag vom 5. Aug 2011
 
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#7

AW: Listview ein Image aus ImageList zuweisen

  Alt 5. Aug 2011, 07:14
Um es noch sauberer zu machen:
Einen Class Helper verwenden, der das ListItem befüllt. Bei der Gelegenheit kann man dann auch gleich konsequent refaktorisieren.
Damit sollten dann die Grundregeln ordentlichen OOP einigermaßen erfüllt sein.

Delphi-Quellcode:
Type
// Es ist die Aufgabe eines TFileInfo, in meiner Applikation das richtige Icon zu liefern
  TIconIndexHelper = Class Helper For TFileInfo
    Function IsDirectory : Boolean;
    Function GetImageIndexFromFileName : Integer;
  End;

// Es ist Aufgabe eines TListItem, in meiner App sich selbst anhand eines TFileInfo zu befüllen
  TListViewItemFillFromFileInfoHelper = Class Helper For TListItem
    Procedure FillSubItemsWithNameInfo (aFileInfo : TFileInfo);
    Procedure FillContentsFromFileInfo (aFileInfo : TFileInfo);
  End;

Const
  iiNoIcon = -1;
  iiMP3Icon = 0;

Function TIconIndexHelper.GetImageIndexFromFileName : Integer;
Begin
  if AnsiUpperCase(ExtractFileExt(Name)) = AnsiUpperCase('.mp3') then
    Result := iiMP3Icon
  else
    Result := iiNoIcon;
End;

Function TIconIndexHelper.IsDirectory : Boolean;
Begin
  Result := LongBool(Attributes and FILE_ATTRIBUTE_DIRECTORY)
End;
    
Procedure TListViewItemFillFromFileInfoHelper.FillSubItemsWithNameInfo (aFileInfo : TFileInfo);
Begin
  SubItems.Add(aFileInfo.Location);
  SubItems.Add(aFileInfo.Name);
  if aFileInfo.IsDirectory then
    SubItems.Add('Folder')
  else begin
    SubItems.Add(FormatFileSize(aFileInfo.Size));
    SubItems.Add(DateTimeToStr(aFileInfo.ModifiedTime));
  end;
End;
      
Procedure TListViewItemFillFromFileInfoHelper.FillContentsFromFileInfo (aFileInfo : TFileInfo);
Begin
  Caption := IntToStr(Self.ListView.Items.Count);
  FillSubItemsWithNameInfo(aFileInfo);
  ImageIndex := aFileInfo.GetImageIndexFromFilename;
end;

...
  ListView1.Items.BeginUpdate;
  Try
    ListView1.Items.Add.FillContentsFromFileInfo (FileInfo);
  Finally
    ListView1.Items.EndUpdate;
  End;
  if not FindFile.Threaded then
    Application.ProcessMessages;
end;
Es ist natürlich 3x soviel Schreibarbeit, aber dafür übersichtlich, verständlich und leichter erweiterbar. Meine Meinung.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
 


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 06:09 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