Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Listview für Dateinamen (https://www.delphipraxis.net/204518-listview-fuer-dateinamen.html)

kdf 3. Jun 2020 12:53

Listview für Dateinamen
 
Hallo,

ich möchte Dateien (PDF, TIF, etc.) bestimmten Verträgen zuordnen,
die sich in einem für den jeweiligen Vertrag vorgesehenen Ordner befinden.
Die Dateiliste soll immer sichtbar sein. Sonst würde ich ja den OpenFileDialog nehmen.
Es gibt als fertiges FileView ja nur diese Komponente von der 3.1 Palette. Das ist wohl
so ein Überbleibsel aus der 16-bit-Zeit.

Wer hat mal eine Empfehlung dafür?
Eine Komponente von Drittanbietern möchte ich dafür nicht installieren.

Gruß
K.-D.

DeddyH 3. Jun 2020 14:03

AW: Listview für Dateinamen
 
Wenn es keine großen optischen Anforderungen gibt, kannst Du ja einen Standard-ListBox nehmen und mit LB_DIR befüllen lassen.

kdf 3. Jun 2020 14:53

AW: Listview für Dateinamen
 
denke ja. Wenn es mal mehrere Dateien sind, wäre sortieren ganz nett, Dateidatum, Dateigröße wäre ganz gut.
Man könnte auch ein Stringgrid nehmen. Bei einer Listbox oder Listview ist das mit mehreren Feldern wohl schlecht zu machen.

DeddyH 3. Jun 2020 15:03

AW: Listview für Dateinamen
 
Du kannst ja einmal einen Blick auf meinen FileSearcher werfen, da ist auch eine Demo mit einer ListView dabei.

kdf 5. Jun 2020 10:39

AW: Listview für Dateinamen
 
Ich muß das nochmal aufgreifen. Vielleicht hat jemand noch eine andere Idee.

Es geht mit hauptsächlich um die Automatisierung von Schriftverkehr per Mail.

Ich habe einen Dokumentversand mit diversen Textbausteinen in Delphi 10 implementiert. Damit ist ein vollatomatischer Versand möglich. Bei einem erheblichen Teil der Mails müssen Anhänge mit versand werden. Die Anhänge befinden sich derzeit in einem 7-zip-Container. Der Pfad zum jeweiligen Zip-Container steht in der Datenbank. Soweit ist das schon sehr komfortabel. Das Problem ist das Anhängen der Anlagen. Ich kopiere diese dann immer in ein temporäres Verzeichnis um sie an die Mail zu hängen. Das hat mit automatisch ja nichts zu tun. Daher hatte ich die Idee, die Anlagen statt im Zip-Container, in einem Ordner abzulegen. Dann ist das mit automatisch anhängen ja kein Problem.

Die Alternative wäre eben, wenn man das mit dem Anhängen aus dem Zip-Container doch automatisieren könnte.

Vieleicht hat jemand da eine Idee.

K.-D.

Billa 5. Jun 2020 11:12

AW: Listview für Dateinamen
 
Nur eine Anregung: Ich habe etwas ähnliches für Labordaten gemacht, die jeweils einem Vorgang angehängt werden. Ich schreibe aber die Anhänge nicht in ein ZIP oder einen Ordner sondern in BLOB-Felder einer Firebird-Datenbank. Die Labordaten sind nicht so riesig (jeweils etwa 50kB) , es gibt nur etwa 2500 Vorgänge und pro Vorgang wohl höchstens zwischen 20 und 50 Labordatensätze. Das hat den Charme, dass in der zweigeteilten Ansicht (links Vorgänge, rechts Labordaten) nur ein bisschen SQL und Stream-Handling notwendig ist. Kein Zip, keine Probleme mit Vertraulichkeit und Schutz, keinen Ärger mit Verfügbarkeit und Verzeichnisproblemen. Und ein "Umzug" oder Datensicherung ist auch kein Problem...

Die Verträge könnte man ja ebenfalls in einer Tabelle speichern.

Bbommel 5. Jun 2020 12:17

AW: Listview für Dateinamen
 
Zitat:

Zitat von kdf (Beitrag 1466505)
Ich muß das nochmal aufgreifen. Vielleicht hat jemand noch eine andere Idee.

Es geht mit hauptsächlich um die Automatisierung von Schriftverkehr per Mail.

Das hat jetzt aber nichts mehr mit einem Listview zu tun oder verstehe ich deine Frage völlig falsch?


Zitat:

Zitat von kdf (Beitrag 1466505)
Ich habe einen Dokumentversand mit diversen Textbausteinen in Delphi 10 implementiert. Damit ist ein vollatomatischer Versand möglich. Bei einem erheblichen Teil der Mails müssen Anhänge mit versand werden. Die Anhänge befinden sich derzeit in einem 7-zip-Container. Der Pfad zum jeweiligen Zip-Container steht in der Datenbank. Soweit ist das schon sehr komfortabel. Das Problem ist das Anhängen der Anlagen. Ich kopiere diese dann immer in ein temporäres Verzeichnis um sie an die Mail zu hängen.

Das heißt, du entpackst die 7z-Dateien manuell, schmeißt den Inhalt in einem Ordner und dort kann sie dein Programm dann abholen? Müssen es denn unbedingt 7z-Dateien sein oder dürfen es auch ganz normale zip-Dateien sein? Dann könntest du einfach das bei Delphi eingebaute TZipFile nutzen, mit dem die Dateien auspacken (z.B. in einen temporären Pfad) und an deine Mails anhängen.

Oder wo genau geht es nicht weiter?

(Es gibt wohl auch irgendwelche 7zip-DLLs, die man aus Delphi heraus nutzen kann, wenn es denn unbedingt 7z als Format sein muss, aber das habe ich selber nie genutzt)

kdf 5. Jun 2020 17:52

AW: Listview für Dateinamen
 
Zitat:

Zitat von Billa (Beitrag 1466508)
Nur eine Anregung: Ich habe etwas ähnliches für Labordaten gemacht, die jeweils einem Vorgang angehängt werden.

das ist wohl die beste Art für diesen Zweck.

Ich habe aber das komplette Sortiment an Dateien, die auch mit Doppelklick zu öffnen sein sollen (word, excel, pdf, tif, etc.). Das wird dann recht kompliziert und umständlich.

K.-D.

kdf 5. Jun 2020 18:04

AW: Listview für Dateinamen
 
Zitat:

Das heißt, du entpackst die 7z-Dateien manuell, schmeißt den Inhalt in einem Ordner und dort kann sie dein Programm dann abholen? Müssen es denn unbedingt 7z-Dateien sein oder dürfen es auch ganz normale zip-Dateien sein? Dann könntest du einfach das bei Delphi eingebaute TZipFile nutzen, mit dem die Dateien auspacken (z.B. in einen temporären Pfad) und an deine Mails anhängen.
7z hat mit Listview natürlich nichts zu tun. Listview oder etwas Ähnliches benötigt man aber um die Dateien z.B. permanet darzustellen.

TZipFile finde ich nicht. Ist das ggf. in der Prof. nicht dabei?

7z habe ich nur wegen der Windows-Oberfläche genommen. Ansich ist das so vom Handling recht gut, bis auf das Anhängen an eine Mail.

K.-D.

Alter Mann 5. Jun 2020 18:22

AW: Listview für Dateinamen
 
Schau dir dies mal an:

MustangpeakCommonLibrary
MustangpeakListView
MustangpeakVirtualShell
VirtualTreeView

dazu noch die unit sevenzip aus der JCL, etwas Arbeit, fertig:)

kdf 5. Jun 2020 18:42

AW: Listview für Dateinamen
 
Zitat:

Zitat von Alter Mann (Beitrag 1466566)
Schau dir dies mal an:

MustangpeakCommonLibrary
MustangpeakListView
MustangpeakVirtualShell
VirtualTreeView

dazu noch die unit sevenzip aus der JCL, etwas Arbeit, fertig:)

Ich habe in Delphi 6 diese mordsmäßige Komponentensammlung, möchte ich in Delphi 10 vermeiden.

Harry Stahl 5. Jun 2020 21:07

AW: Listview für Dateinamen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bezogen auf Deinen ersten Beitrag, meinst Du einfach eine komfortablere Auswahlmöglichkeit von Dateien, wie z.B in der Anlage dargestellt?

kdf 6. Jun 2020 10:25

AW: Listview für Dateinamen
 
genau so könnte das aussehen. Ggf. könnte da noch eine Mehrfachauswahl sein, damit man gleichzeitig mehrere ausgewählte Dateien nehmen kann.

Bbommel 6. Jun 2020 11:37

AW: Listview für Dateinamen
 
Zitat:

Zitat von kdf (Beitrag 1466564)
TZipFile finde ich nicht. Ist das ggf. in der Prof. nicht dabei?

Doch, das ist auch in der Professional-Edition schon dabei. Laut deinem Profil hast du Seattle? Da gibt es das jedenfalls schon, binde mal die Unit System.Zip ein.

Hier die Doku.

kdf 6. Jun 2020 12:19

AW: Listview für Dateinamen
 
Zitat:

Zitat von Bbommel (Beitrag 1466591)
Zitat:

Zitat von kdf (Beitrag 1466564)
TZipFile finde ich nicht. Ist das ggf. in der Prof. nicht dabei?

Doch, das ist auch in der Professional-Edition schon dabei. Laut deinem Profil hast du Seattle? Da gibt es das jedenfalls schon, binde mal die Unit System.Zip ein.

Hier die Doku.

Habe es gefunden, ist da. Da fehlt nur noch eine Viewer-Komponente. Das kann aber auch einfach ein Listview sein.

Harry Stahl 6. Jun 2020 12:38

AW: Listview für Dateinamen
 
Zitat:

Zitat von kdf (Beitrag 1466583)
genau so könnte das aussehen. Ggf. könnte da noch eine Mehrfachauswahl sein, damit man gleichzeitig mehrere ausgewählte Dateien nehmen kann.

Ja, eine Mehrfachdateiauswahl ist auch dabei (Strg+Linksclick).

Mehr Informationen hierzu gibt es hier: https://www.devpage.de/dframes/Frames.htm

Ich bin gerade dabei die Seite wieder neu aufzubauen. Es sind also keine Komponenten, sondern Frames (bin mir nicht sicher, ob sich Dein Ausschluss der Lösungen von Drittherstellern nur auf Komponenten bezog oder generell, weil Du evtl. nur eine kostenlose Lösung wolltest). Ich persönlich habe auch eine gewisse Aversion gegen die Verwendung von Komponenten von Drittherstellern, da man bei jedem Delphi-Update die erst mal nicht nutzen kann. Das Problem stellt sich aber bei den Frames hier im Prinzip nicht, da sie wie eigene Projekt-Units behandelt werden und sich i.d.R. mit jeder neuen Delhpi-Version einfach kompilieren lassen. Ich hatte jedenfalls noch nie hier ein Problem.

Billa 7. Jun 2020 11:51

AW: Listview für Dateinamen
 
@kdf #8

Entschuldigung, dass ich den "toten Zweig" der Diskussion nochmal hochhole... ich war gestern nicht online

Wenn Du die Dateien (Anhänge) nicht nur verschicken, sondern auch öffnen willst, müssen die entsprechenden Programme auf dem Rechner installiert (und in Windows registriert) sein. Du kannst die Auswahl also i.d.R. Windows überlassen: ShellExecute ist Dein Freund. Es gibt natürlich Fälle, die komplizierter sind, aber die hast Du bei den anderen Lösungen auch.

Und die Steuerung der Listen inklusive Spezialfällen ist extrem einfach, weil Du immer nur mit Tabelleneinträge hast, für die es ja wunderbare Komponenten (auch mit Mehrfachauswahl) gibt.

Alallart 7. Jun 2020 18:56

AW: Listview für Dateinamen
 
@kdf

Hier laufen anscheinend zwei Diskussionen überlappend, Zip und Liste. Was die Liste an Daten angeht, so kann das einfach gelöst werden. Man muss es nur machen.

Was man nicht machen sollte ist die Informationen in der Komponente ListView speichern. Vielmehr sollte man eine Klasse für alle nötigen Informationen erstellen. Die Informationen dann in die Objekte packen, und diese mit dem Item binden. Die Informationen im Item, also für die Darstellung, kommen dann aus dem Objekt. So ist es am saubersten, und, auch wenn es sich kompliziert anhört, schnell zu realisieren.

Noch besser ist mit TObjectList zu arbeiten. Auch hier eine Klasse für die Informationen (Dateiname, Größe, Icon, usw.). Das schöne an ObjectList ist, dass man sich nicht um das Freigeben der Objekte kümmern muss. Das macht TObjectList selbst. Klein wenig mehr Aufwand, aber man spart sich auch Aufwand. Und nun kommt der Clou. Die Informationen kann man in ListView virtuell darstellen.

kdf 7. Jun 2020 20:41

AW: Listview für Dateinamen
 
@billa

Das läuft bisher natürlich mit ShellExecute und sollte auch so bleiben. In Verbindung mit der Oberfläche von 7-Zip (7zFM) läuft das ansich sehr schön. Das sind nie mehr als 20 - 30 Dateien in einem Ordner/Archiv. Da stellt sich nur die Frage, ob man das Anhängen dieser Dateien an eine Mail vereinfachen kann. Die Mail wird mittels Textblock automatisch generiert. Es bleiben immer diese manuellen Schritte - Anlagen in einen TMP-Ordner kopieren und anhängen. Wenn die Anlagen in einem normalen Ordner stehen, geht das auch automatisch. Eine Liste wird natürlich immer benötigt. 7zFM stellt diese Liste aber bereits zur Verfügung. Ob nun 7z oder auch die Delphi-interne Zip-Lösung, die Anhänge müssen zunächst aus dem Archiv entpackt werden.

@Alallart

Als 2 Diskussionen sehe ich das nicht unbedingt. Eine Auswahl geht nicht ohne eine Liste. Bei dieser 7z-Oberfläche (7zFM) ist diese recht komfortable Liste bereits da. Bei Windows Ordner oder Delphi-Zip muß eine Liste gebaut werden. 7-Zip hat den Nachteil, dass das Programm fertig ist, der Programmierer nicht erreichbar ist. Zumindest sind meine Versuche ihn zu erreichen fehlgeschlagen. Wenn ich in diesen Container eine Datei schiebe, die dort schon existiert, wird die einfach ohne Rückfrage überschrieben. Eine Datei Rechnung.pdf überschreibt also eine vorhandene Rechnung.pdf ohne Rückfrage, obwohl etwas ganz anderes drin steht. Das kann nicht sein. Daher würde ich es vielleicht gern selbst bauen. Die Liste muß nichts können außer anzeigen und sortieren, eine Mehrfachauswahl zur Verfügung stellen.

Es geht eigentlich nur um die Frage, welche Lösung ist besser zu automatisieren. Textbaustein für die Mail auswählen, Anhänge auswählen, an Outlook übergeben. Outlook Display, oder sofort senden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz