vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
DTA-Dateien erstellen inkl. BLZ-/Kontonummernpr?fung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB4, VB5, VB627.11.01
Eigene "zuletzt geöffnete Dateiliste" realisieren

Ab sofort können auch Sie Ihre Anwendung mit einer "RecentFiles"-Liste austatten, welche die x zuletzt geöffneten Dateien anzeigt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  20.020 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    MS-Word zeigt sie, Visual Basic zeigt sie und viele anderen Anwendungen auch - eine Liste der zuletzt geöffneten Dateien, und zwar im Menü Datei. Hier werden z.B. immer die vier zuletzt geöffneten Dateien aufgelistet, um so einen schnellen Zugriff auf die letzten Dateien zu bieten.

    Auch in der eigenen Anwendung kann eine solche "RecentFiles"-Liste sinnvoll sein, z.B. wenn Sie einen kleinen Texteditor programmiert haben.

    Was muss man beachten, wie und wo werden die Dateinamen gespeichert? All das erfahren Sie in unserem heutigen Tipp.

    Vorbereitung des Formulars
    Öffnen Sie den Menüeditor der Form, in der Sie im Menü die letzten x-Dateien zum schnellen Abruf bereitstellen wollen. Fügen Sie an geeigneter Stelle (am besten ganz zum Schluss, jedoch noch vor dem "Beenden"-Befehl) 4 neue Menüeinträge ein:

    1. Name = mnuRecent, Index = 1
    2. Name = mnuRecent, Index = 2
    3. Name = mnuRecent, Index = 3
    4. Name = mnuRecent, Index = 4

    Die Liste der letzten Dateien lässt sich in einer Text-Datei, in INI-Files oder auch in der Registry speichern. Wir entscheiden uns für die Registry. Hierfür stellt uns Visual Basic bereits die notwendigen Funktionen zum Speichern und Auslesen zur Verfügung: SaveSetting und GetSetting

    Nachdem nun das Formular vorbereitet ist und auch klar ist, wie und wo wir die "RecentFiles"-Liste speichern, kann es ans Codieren gehen.

    Im Allgemein-Teil der Form legen wir zunächst den Abschnitt der Registry fest, sowie die Anzahl der Dateien, die wir uns "merken" wollen.

    Option Explicit
    ' Abschnitt in der Registry festlegen
    ' (hier werden die Dateinamen gespeichert)
    Const RegAppName = "MyApplication"
    Const RegAppSection = "RecentFiles"
     
    ' maximale Anzahl der Dateinamen, die "gemerkt"
    ' werden sollen
    Const intMaxFiles = 4

    Im Form_Load Ereignis wird das Menü Datei entsprechend aktualisiert, so dass sofort die zuletzt geöffneten Dateien angezeigt werden. Hierbei möchten wir aber nicht den vollständigen Pfad, sondern nur den reinen Dateinamen ausgeben:

    Private Sub Form_Load()
      ' Menü Datei aktualisieren
      SetMenuRecentFiles
    End Sub
     
    Private Sub SetMenuRecentFiles()
      ' Liste der zuletzt geöffneten Dateien im Menü
      ' Datei anzeigen
     
      Dim I As Integer
      Dim intCount As Integer
      Dim strFilename As String
     
      For I = 1 To intMaxFiles
        ' Dateiname aus Registry lesen
        strFilename = GetSetting(RegAppName, RegAppSection, _
          CStr(I), "")
     
        ' Jetzt im Menü anzeigen
        If strFilename <> "" Then
          mnuRecent(I).Caption = "&" & CStr(I) & " " & _
            Mid$(strFilename, InStrRev(strFilename, "\") + 1)
          mnuRecent(I).Tag = strFilename
          mnuRecent(I).Visible = True
        Else
          mnuRecent(I).Visible = False
        End If
      Next I
    End Function

    Wenn Sie den Code der Prozedur SetMenuRecentFiles genauer anschauen, stellen Sie fest, dass der vollständige Dateiname der Dateien in der Tag-Eigenschaft der Menü-Einträge gespeichert wird. Ja, auch Menüs haben eine Tag-Eigenschaft

    Private Sub mnuRecent_Click(Index As Integer)
      ' Datei öffnen
      MsgBox "Datei öffnen:" & vbCrLf & mnuRecent(Index).Tag
    End Sub

    Fehlt jetzt eigentlich nur noch der Teil, in welchem die Dateien in die Registry gespeichert werden. Hierzu erstellen wir eine Prozedur, welche Sie jedesmal dann aufrufen, wenn eine neue Datei geöffnet wurde.

    Private Sub AddToRecentList(ByVal strFilename As String)
      ' Eintrag der Liste der zuletzt geöffneten
      ' Dokumenten hinzufügen
     
      Dim I As Integer
      ReDim arrFiles(intMaxFiles) As String
     
      ' Einträge um eine Position versetzt einlesen
      For I = intMaxFiles - 1 To 1 Step -1
        arrFiles(I + 1) = GetSetting(RegAppName, _
          RegAppSection, CStr(I), "")
      Next I
     
      ' Erster Eintrag = zuletzt geöffnetes Dokument
      arrFiles(1) = strFilename
     
      ' Alle Einträge wieder speichern
      For I = 1 To intMaxFiles
        SaveSetting RegAppName, RegAppSection, _
          CStr(I), arrFiles(I)
      Next I
    End Sub

    Wie gesagt, wird eine neue Datei geöffnet, muss die AddToRecentList-Prozedur aufgerufen werden:

    Private Sub cmdOpen_Click()
      ' Datei öffnen
      On Local Error Resume Next
      With CommonDialog1
        .CancelError = True
        .ShowOpen
        If Err = 0 Then
          ' Datei der Liste hinzufügen
          AddToRecentList .FileName
     
          ' "Datei"-Menü aktualisieren
          SetMenuRecentFiles
        End If
      End With
    End Sub

    Das war's dann auch schon.
    Ab sofort bietet auch Ihre Anwendung eine "RecentFiles"-Liste
     

    Dieser Tipp wurde bereits 20.020 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Neue Diskussion eröffnen

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
    (einschl. Beispielprojekt!)

    Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
    - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
    - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
    Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel