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
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. Dieser Tipp wurde bereits 25.704 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
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. |