Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Item ausführen


Delete - Mo 19.07.10 20:30
Titel: Item ausführen
- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Mo 19.07.10 21:05

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Sobald neue Dateien aufgenommen werden, lassen sich die älteren Einträge nicht mehr ausführen.
Das ist kein Wunder, schließlich funktioniert es beim aktuellen Item nur rein zufällig.

Der OpenDialog setzt das Arbeitsverzeichnis auf das dort ausgewählte. Da dort auch die ausgewählte Datei liegt, klappt es. Denn du ignorierst den Dateipfad ja einfach und gibst nur einen Dateinamen an ShellExecute. Dass es dort dann funktioniert, ist auch insofern Glück, als die Standardaktion zufällig (ok, steht in der Doku, aber das kann sich auch ändern) open ist. Warum gibst du das alles nicht an? :roll:

Jedenfalls hast du das typische Problem, dass du die Daten versuchst in einer visuellen Komponente zu speichern...
Speichere die Datei (sprich den kompletten Pfad z.B.) im Hintergrund und pack eine Referenz zu den Items in die ListView, dafür gab es glaube ich Item.Data oder sowas. Dann kannst du darüber wieder auf die dahinterliegenden Daten zugreifen.

Mit einer TStringList sollte es notfalls auch gehen, wie hast du das denn versucht?


Delete - Mo 19.07.10 21:53

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Di 20.07.10 05:27

Es geht darum die Pfade im Programm zur Verfügung zu haben. Nicht diese auf der Festplatte abzuspeichern, schon gar nicht im Pfad der Exe. :shock:

Du kannst unter private ein Feld anlegen, zur Not auch eine TStringList, wenn es denn sein muss. Dort kannst du dann die Pfade speichern. Äh, speichern im Arbeitsspeicher meine ich natürlich...

In Data kannst du z.B. einen Pointer auf einen Record ablegen und in diesem weitere Daten zu dem Item speichern. Du solltest nur nicht vergessen den Speicher auch wieder freizugeben, daher bietet es sich an die Daten in einer Liste zusätzlich zu speichern und dann dort am Ende freizugeben.


Delete - Do 22.07.10 23:43

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Fr 23.07.10 06:03

Irgendwann kommst du vielleicht dahinter, dass du dir die Sache unnötig kompliziert machst, wenn du deine Daten in visuellen Komponenten speicherst. ;-)

Bei so kleinen Sachen noch nicht, aber wenn du größere Tools mit größeren Datenmengen hast. ;-)

Mal ne kleine Demo im Anhang, zwar auch noch nicht ideal, aber immerhin ein Fortschritt. :D


Delete - Sa 24.07.10 06:01

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Sa 24.07.10 06:28

Wenn ich mehr Zeit hätte, würde ich das auch öfter machen. :mrgreen: