![]() |
Re: ListView in einen Stream speichern und laden
mmh
gute Frage ich stell das jetzt einfach mal so frei in den Raum - ich weiss nicht was besser ist, die Imagelist mitspeichern oder extra übertragen |
Re: ListView in einen Stream speichern und laden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe schnell die App zusammengecodet. Sieh sie dir an, teste sie durch. Die Icons werden noch nicht beruecksichtigt, das ist aber eine Kleinigkeit wenn du ein bisschen reindenkst ;) Ich speichere zur Zeit noch in ein File, aber die TmxJsCollection bietet auch die Moeglichkeit in einen Stream zu speichern. Einfach SaveToStream/LoadFromStream anstatt SaveToFile/LoadFromFile verwenden. Ich habe den Code ein wenig dokumentiert, ich hoffe du steigst durch, ansonsten frag einfach hier. Greetz alcaeus |
Re: ListView in einen Stream speichern und laden
Hallo,
danke für dein beispiel-programm :-) Ich hab das mal so übernommen - nur eine frage hätt ich: Wie speichere ich in einen Stream? Ich hab mal TStream und TMemoryStream probiert aber sobald ich laden will bekomm ich nen fehler "Stream-Lesefehler" |
Re: ListView in einen Stream speichern und laden
Hast du den Stream erzeugt?
Probier mal, den Stream zu erzeugen (TMemoryStream), und in den Stream zu schreiben. Anschliessend saeuberst du die ListView (Items.Clear), und ladest die Collection wieder aus dem Stream. Wichtig ist, den Stream nicht freizugeben, sonst sind die Daten futsch ;) Greetz alcaeus |
Re: ListView in einen Stream speichern und laden
Hallo,
also ich mal folgendes:
Delphi-Quellcode:
Nur der Unterschied ist, dass ich in eine andere ListView lade.
procedure TForm1.FormCreate(Sender: TObject);
begin ListView_Stream := TMemoryStream.Create; iColCount := 1; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(ListView_Stream); end; Also: Ich speichere die ListView1 in einen Stream und lade dann den Inhalt des Streams in die ListView2. Kann da ein Fehler auftreten? |
Re: ListView in einen Stream speichern und laden
Zitat:
Greetz alcaeus |
Re: ListView in einen Stream speichern und laden
Hallo,
das war der Fehler. Ich muss, bevor der Stream geladen wird, Stream.Position auf 0 setzen. Interessanterweise wird das Icon, dass ich ja in der ersten Spalte habe, mitgespeichert. Danke für deine Hilfe!! |
Re: ListView in einen Stream speichern und laden
Jetzt hätt ich aber trotzdem nochmal eine Frage:
Wie kann ich das Icon jeder Zeile mit in den Stream speichern? Ich dachte das würd funktionieren, hatte aber einen Fehler bei mir im Test-Projekt |
Re: ListView in einen Stream speichern und laden
Zitat:
Aber Alki war einfach dumm, als er dir das Ganze Rundumsorglos-Paket geliefert hat. Es war absolut klar, dass du nun wegen jeder Kleinigkeit sofort nachfragst bevor du nachdenkst. Hat es dich denn überhaupt nicht interessiert, was die dpCollection ist/macht? Warum nur SubItems und Caption in der Datei stehen? Hättest du das wirklich gemacht, wäre dir aufgefallen, dass die collectionItem-Ableitung nur 2 Published Properties hat. Die zufälligerweise genauso heißen, wie die einzigen 2 Werte eines Items, die in der Datei landen. Wenn dir jetzt kein Licht aufgeht, wie du auch noch den ItemIndex da reinkriegst, ist dir wohl nicht mehr zu helfen. Wenn ich etwas offensiv klang, war das kein Zufall. ;) Es gibt nur wenige Dinge, bei denen ich mich aufregen kann. Desinteressse für seinen Job ist eines davon. |
Re: ListView in einen Stream speichern und laden
Nun, da musst du dir ueberlegen, ob du die Images direkt speichern willst, oder nur die Indize der Images. Bei letzterem reicht eine published Integer-property, wenn du das Image selbst speichern willst, musst du ein TBitmap oder so zur Collection hinzufuegen, und das Bitmap aus der Imagelist holen. Beim Laden schreibst du es in die Imagelist. Nachteil: du hast Images doppelt und dreifach, ausser du fuegst eine entsprechende Pruefung ein.
Alternativ kannst du die Collection zweiteilen: eine globale Collection, welche 2 Subcollections hat: eine fuer die ListView-Items, eine fuer die Imagelist. @Robert: ja, das Beispiel ist zu umfangreich geraten, da hast du Recht. Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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