![]() |
ImageList und ListView speichern
Hallo liebe leser...
Stehe vor dem Problem, das ich gerne die Icons einer TimageList speichern würde. aber nicht nur einfach speichern sondern es muss ein Bezug zu dem ListView Eintrag zusätzlich gespeichert werden. So das ich beim Laden weis - aha icon XY gehört zu ListView Item XY .... Ergo muss da irgendow noch ein Bezug rein nur wüsst ich nicht wie :gruebel: Könnt Ihr mir helfen? |
Re: ImageList und ListView speichern
Hallo delphinia,
du mußt dem ListItem ein SubItem zuordnen und dem SubItem mit
Delphi-Quellcode:
ein Objekt geben.
AListitem.SubItems.AddObject(AName,AIcon);
Also nochmal etwas genauer:
Delphi-Quellcode:
anschließend kann man sich das Objekt wieder laden:
// ListviewItem erstellen
AListItem := AListView.Items.Add; // Objekt in SubItem speichern AListItem.SubItems.AddObject(AIcon.Name,AIcon);
Delphi-Quellcode:
Ich hoffe dir damit ein wenig geholfen zu haben.
AListItem := AListView.Selected;
AIcon := TIcon(AListItem.SubItems.Objects[AListItem.SubItems.IndexOf(AName)]); Ansonsten könnte man TListView ableiten und eine StringListe hinzufügen:
Delphi-Quellcode:
und dann jedesmal beim Erstellen eines ListItems ein Icon-Objekt der StringListe geben. Die StringListe darf aber nicht sortiert sein, da sonst der Bezug zur Listview verloren geht.
TListViewEx = class(TListView)
private FIconList: TStringList; public property IconList : TStringList read FIconList write FIconList; end; MfG Woto |
Re: ImageList und ListView speichern
Mein Problem oder mein Verständnisproblem ist folgendes - weshalb ich die Icons mit Bezug zu dem ListView Item speichern möchte.
Ich verschiebe die Icons in der Liste ich lösche oder füge Icons hinzu .... Und wie Du bei Deinem Beispiel schriebst geht das alles nicht wenn die Liste Sortiert wird! hmmm |
Re: ImageList und ListView speichern
Man sollte immer die zugrundeliegenden Datenstrukturen von der Bedienoberfläche entkoppeln. Denn dann kannst du die Datenstruktur speichern und bist unabhängig von der Oberfläche. So bald man versucht Kontrollelemente zur Datenhaltung zu nutzen, sollte man das gesamt Konzept überdenken und ihm gescheite Datenstrukturen zugrundelegen.
|
Re: ImageList und ListView speichern
Zitat:
Wie kann ich ne ImageList von eriner ListView entkoppeln? Die gehören doch zusammen??? :gruebel: |
Re: ImageList und ListView speichern
Nehmen wir an wir haben in einem Listview zwei Spalten: Name und dazugehörige E-Mail Adresse. Wenn ich jetzt an eine Person eine Mail schicken will, sollte man nicht auf die zweite Spalte im Listview zugreifen, sondern auf eine Datenstrucktur, die der Ansicht im Listview zugrundeliegt. Zum Beispiel ein Array of Record:
Delphi-Quellcode:
Wobei ID der Index des Eintrages im Listview sein kann. Schiebst du jetzt noch eine Spalte dazwischen, musst du nicht überall gucken, wo du auf die zweite Spalte zugreifst und dies in die dritte Spalte ändern, weil die E-Mail Adresse ja jetzt in der dritten Spalte steht. Natürlcih musst du jetzt darauf achten, dass die Eintrage synchron sind mit der zurgrundeliegenden Datenstruktur. Dieser Aufwand ist aber zu verschmerzen. Und je komplexer die Datenstrukturen sind, desto mehr Probleme bekommst du, wenn du Kontrollelemente zur Datenhaltung missbrauchst.
type
TKontakt = record ID: Integer; Name: String[255]; Mail: String[255]; end; Die ImageList gehgört zum Listview. Aber die einzelnen Einträge der ImageList gehören ja irgendwie zu deinen Daten. Und wenn du an den Daten was änderst, soll sich ja auch das Icon aus der ImageListe ändern:
Delphi-Quellcode:
Änderst du jetzt waqs im Listview führst du auch die Änderung in deiner Datenstruktur durch. Und wenn du dann den Listview aus der Datenstruktur füllst, weißt du immer welches Icon aus der ImageListe zu deinem Eintrag gehört, weil du ja den Index mit deinem Eintrag gespeichert hast.
type
TFoobar = record Item: ...; ImageIndex: Integer; end; |
Re: ImageList und ListView speichern
hmm ein bisschen hab ich verstanden. nur noch nicht so ganz wie ich das auf mein Problem umsetzten kann
bez. woher ich denn dann nun weis das die Record ID die ID XY vom Image ist und umgedreht... Aber Du hast recht derzeit muss ich wenn ich nen Item verschiebe ne Funktion aufrufen damit auch das Icon in der ImageList verschoben wird! Ich muss wohl erst einmal gestehe, dass ich gerade einmal 2 Monate mit Delphi mich versuche ;) und hin udn wieder (so wie jetzt) hab ich das gefühl das ich dem nicht gewachsen bin! :wall: |
Re: ImageList und ListView speichern
hmm also ich versteh das mit den Records nicht - hat jemand gute links zu Beispielen, die zu meinem Problem passen.? ich habe noch nie mit Records gearbeitet ;(
Danke Euch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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 by Thomas Breitkreuz