Dateinamen kürzen und anzeigen

Die Darstellung von Dateinamen inklusive Pfad ist in Access (und auch in anderen Anwendungen) problematisch, wenn dazu lediglich ein Textfeld, ein Kombinationsfeld oder ein Listenfeld zur Verfügung steht. In der Regel reicht der Platz nicht, um den kompletten Dateinamen darzustellen. Dieser Beitrag zeigt, wie Sie Dateinamen entsprechend gekürzt darstellen und dennoch bei Bedarf die Bearbeitung in Text- oder Kombinationsfeldern erlauben.

Beginnen wir mit einem einfachen Textfeld namens txtDateiname, das einen mit einem Datei öffnen-Dialog ausgewählten Dateinamen aufnehmen soll. Dies erledigen Sie in der Regel mit einer Konstellation wie in Bild 1. Die Schaltfläche rechts löst beim Anklicken das Ereignis Beim Klicken aus, das wiederum die folgende Ereignisprozedur startet:

pic001.png

Bild 1: Einfaches Textfeld zum Aufnehmen eines Dateinamens plus Schaltfläche

Private Sub cmdDateiAuswaehlen_Click()
    Me!txtDateiname = OpenFileName(CurrentProject.Path, , "Access-Datenbank (*.mdb,*.accdb)|Alle Dateien (*.*)")
    End Sub

Die Prozedur verwendet die Funktion OpenFilename, um einen Datei öffnen-Dialog anzuzeigen. Die Datei, die der Benutzer mit diesem Dialog auswählt, wird dann als Wert des Textfeldes txtDateiname eingetragen.

Dies funktioniert auch reibungslos, allerdings zeigt das Textfeld zu lange Dateinamen wie in Bild 2 an.

pic002.png

Bild 2: Anzeige eines zu langen Dateinamens

Dateiname kürzen

Was also tun Ganz einfach: Sie nutzen eine kleine Funktion, die den Dateinamen für unsere Zwecke aufbereitet. Das Ergebnis soll so wie in Bild 3 aussehen. Zwischen dem ersten und dem letzten Backslash sollen so viele Verzeichnisse durch drei Punkte (…) ersetzt werden, bis der Ausdruck eine bestimmte Zeichenlänge erreicht – die dann vom Textfeld dargestellt werden kann.

pic003.png

Bild 3: Textfeld mit gekürztem Dateinamen

In diesem Fall hat die Funktion tatsächlich alle Elemente bis auf den Laufwerksbuchstaben und den Dateinamen entfernt.

Bevor wir einen Blick auf die Funktion werfen, welche die Kürzung vornimmt, schauen wir uns noch an, welche Möglichkeiten es zur weiteren Verarbeitung des Dateinamens gibt. So möchte der Benutzer gegebenenfalls doch noch den kompletten Dateinamen sehen oder diesen sogar weiterverwenden. Das Betrachten des Dateinamens lässt sich ganz einfach realisieren, indem Sie den Dateinamen nach dem Einlesen als Wert der Eigenschaft ControlTipText einstellen. Der Dateiname erscheint dann nach dem Überfahren des Textfeldes mit der Maus (s. Bild 4).

pic004.png

Bild 4: Anzeige des vollständigen Dateinamens

Wenn Sie den Wert des Textfeldes weiterverarbeiten möchten, könnten Sie erstens auf den Inhalt der Eigenschaft ControlTipText zugreifen. Wenn Sie diese gar nicht nutzen möchten, legen Sie entweder ein weiteres Steuerelement an, das den Dateinamen zwischenspeichert, oder Sie verwenden die Tag-Eigenschaft des Steuerelements.

Die Prozedur cmdDateiAuswaehlen2_Click, die beim Mausklick auf die Schaltfläche neben dem zweiten Textfeld ausgelöst wird, liest zunächst den Dateinamen in die Variable strDateiname ein (s. Listing 1).

Listing 1: Füllen des Textfeldes mit gekürztem Dateinamen

Private Sub cmdDateiAuswaehlen2_Click()
    Dim strDateiname As String
    strDateiname = OpenFileName(CurrentProject.Path, , "Access-Datenbank (*.mdb,*.accdb)|Alle Dateien (*.*)")
    If Len(strDateiname) > 0 Then
        Me!txtDateiKurz = DateinameKuerzen(strDateiname, 50, True)
        Me!txtDateiKurz.ControlTipText = strDateiname
        Me!txtDateiKurz.Tag = strDateiname
    End If
End Sub

Nach einer Prüfung, ob ein Dateiname eingelesen wurde, führt die Prozedur drei Schritte durch: Sie wendet die weiter unten beschriebene Funktion DateinameKuerzen auf den Wert von strDateiname an und trägt das Ergebnis in das Textfeld txtDateiKurz ein und fügt den vollen Dateinamen als Wert der Eigenschaften ControlTipText und Tag ein.

Manuelle änderung des Dateinamens

Was geschieht, wenn der Benutzer den Dateinamen manuell ändern möchte Dazu wird der Benutzer in das Textfeld klicken und die gewünschten änderungen vornehmen. Nun müsste man allerdings zu diesem Zeitpunkt den gekürzten Eintrag entfernen und den vollen Dateinamen anzeigen, damit eine Bearbeitung möglich wird.

Dazu verwenden wir die beiden Ereignisse, die beim Eintreten in das Textfeld und beim Verlassen ausgelöst werden: Bei Fokuserhalt und Bei Fokusverlust.

Das Ereignis Bei Fokuserhalt des Textfeldes txtDateiKurz soll die folgende Ereignisprozedur auslösen:

Private Sub txtDateiKurz_GotFocus()
    Me!txtDateiKurz.Text = Me!txtDateiKurz.Tag
End Sub

Dies stellt die Eigenschaft Text des Textfeldes auf die in der Eigenschaft Tag gespeicherte lange Version des Dateinamens ein.

Der Benutzer kann den Dateinamen nun bearbeiten. Wenn die Eingabe abgeschlossen ist, was beispielsweise beim Verlassen des Textfeldes der Fall ist, soll der geänderte Text wieder in den beiden Eigenschaften Tag und ControlTipText landen und die gekürzte Fassung angezeigt werden.

Dazu schreibt die folgende Prozedur zunächst die geänderte lange Version in die Eigenschaften Tag und ControlTipText und fügt dann die gekürzte Version als Inhalt des Textfeldes ein:

Private Sub txtDateiKurz_LostFocus()
    Me!txtDateiKurz.Tag = Me!txtDateiKurz
    Me!txtDateiKurz.ControlTipText = Me!txtDateiKurz
    Me!txtDateiKurz = DateinameKuerzen(Me!txtDateiKurz, 50, True)
End Sub

Dateinamen kürzen

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar