VB DirlistBox soll mit letztgeöffnetem Ordner Starten
Hallo beisammen,
ich schreibe an einem kleinen Programm, dass es erlaubt, Dateien aus einem Dateibaum auszuwählen und diese in der Folge zu verschicken. Sehr elegant wäre es wenn das Programm beim Aufruf direkt in den Ordner springt der beim letzten Schließen des Programmes ausgewählt war. Kann mir einer von euch sagen ob/bzw. wie dies umsetzbar ist?
viele Grüße,
Listiger
ich schreibe an einem kleinen Programm, dass es erlaubt, Dateien aus einem Dateibaum auszuwählen und diese in der Folge zu verschicken. Sehr elegant wäre es wenn das Programm beim Aufruf direkt in den Ordner springt der beim letzten Schließen des Programmes ausgewählt war. Kann mir einer von euch sagen ob/bzw. wie dies umsetzbar ist?
viele Grüße,
Listiger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 130410
Url: https://administrator.de/forum/vb-dirlistbox-soll-mit-letztgeoeffnetem-ordner-starten-130410.html
Ausgedruckt am: 08.04.2025 um 15:04 Uhr
26 Kommentare
Neuester Kommentar
Du musst dir dafür eine "Gedankenstütze" in Form dieser zuletzt geöffneten Ordner bauen.
Das heisst, lege dir entweder einen Schlüssel in der Registry an, der beim Schließen des Programms sich diese Einstellung merkt, oder speichere dir diese Infos in einer gewöhnlichen Datei ab, die dann jedesmal beim Starten des Progis eingelesen und ausgwertet wird.
Gruss
Tsuki
Das heisst, lege dir entweder einen Schlüssel in der Registry an, der beim Schließen des Programms sich diese Einstellung merkt, oder speichere dir diese Infos in einer gewöhnlichen Datei ab, die dann jedesmal beim Starten des Progis eingelesen und ausgwertet wird.
Gruss
Tsuki
Kein Problem.
Du hast dein Programm mit einer DIR-List und vermutlich auch mit einer DRIVE-List
Dann machst du einfach folgendes beim Schließen deines Programms
VB6)
Damit kannst du deine letzten Daten abspeichern.
Zum Einlesen nimmst du den "umgekehrten" Fall
So könnte es funktionieren
Gruss
Tsuki
Du hast dein Programm mit einer DIR-List und vermutlich auch mit einer DRIVE-List
Dann machst du einfach folgendes beim Schließen deines Programms
on error resume next
kill (app.path & "\MyIni.ini" )
D = Freefile
open app.path & "\MyIni.ini" for append as D
Print # D, Drive.Drive
Print # D, Dir.Path
close
Zum Einlesen nimmst du den "umgekehrten" Fall
D = Freefile
open app.path & "\MyIni.ini" for Input as D
Input # D, temp1$
Input # D, temp2$
close
Drive.Drive = temp1$
Dir.Path = temp2$
So könnte es funktionieren
Gruss
Tsuki
@bastla,
oh jesses. Danke! und naklar! Muss
heissen.
Werd das gleich mal ändern. Wenn das einer liest
Gruss und schönes Wochenende
Tsuki
oh jesses. Danke! und naklar! Muss
Input # D, temp1$
Input # D, temp2$
Werd das gleich mal ändern. Wenn das einer liest
Gruss und schönes Wochenende
Tsuki
Hallo listiger Teppich,
da ich mit Vb2008 nichts am Hut habe, verweise ich auf die,die sich damit auskennen.
Gruss
Tsuki
da ich mit Vb2008 nichts am Hut habe, verweise ich auf die,die sich damit auskennen.
Gruss
Tsuki
Hallo listigerTeppich,
wie schon gesagt, in VB2008 sieht es anders aus, als in VB6 und ich hatte mit VB2008 noch nichts zu tun.
Aber eventuell findest du hier ein passendes Beispiel, welches dir die Anfangsparameter auf "D:\" stellt.
In VB6 würde soetwas so aussehen:
Gruss
Tsuki
wie schon gesagt, in VB2008 sieht es anders aus, als in VB6 und ich hatte mit VB2008 noch nichts zu tun.
Aber eventuell findest du hier ein passendes Beispiel, welches dir die Anfangsparameter auf "D:\" stellt.
In VB6 würde soetwas so aussehen:
dir1.path = "D:\"
Gruss
Tsuki
Hallo listiger Teppich!
Möchtest Du nicht mal Deinen Code (bzw den relevanten Teil davon) posten - das könnte es erleichtern, einen passenden Vorschlag zu machen ...
[Slightly OT}
@tsuki
): "Visual Basic 2008 - Das Entwicklerbuch"
[/Slightly OT]
Grüße
bastla
Möchtest Du nicht mal Deinen Code (bzw den relevanten Teil davon) posten - das könnte es erleichtern, einen passenden Vorschlag zu machen ...
[Slightly OT}
@tsuki
... hatte mit VB2008 noch nichts zu tun.
Falls sich das ändern solle vielleicht nützlich (zumindest aber gratis [/Slightly OT]
Grüße
bastla
@bastla,
danke für den Link! Falls es mal für mich aktuell werden sollte - VB2008 habe ich bereits, aber noch nicht installiert, weil "no use" - dann gibt es sehr viele Infos im Netz und auch hier in unserem Forum sehr viele patente Menschen, die mir dann weiterhelfen können
Vielen Dank und viele Grüße
Tsuki
danke für den Link! Falls es mal für mich aktuell werden sollte - VB2008 habe ich bereits, aber noch nicht installiert, weil "no use" - dann gibt es sehr viele Infos im Netz und auch hier in unserem Forum sehr viele patente Menschen, die mir dann weiterhelfen können
Vielen Dank und viele Grüße
Tsuki
Hallo listiger Teppich!
Wo in Deinem Programm Du die entsprechende Funktionalität platzierst (insbes das Hinausschreiben des Pfades) musst Du selbst entscheiden - die beiden erforderlichen Codeschnipsel könnten aber etwa so aussehen:
Die Variable (oder auch Konstante) "Ini" sollte natürlich besser nur einmal zentral festgelegt werden ...
Grüße
bastla
Wo in Deinem Programm Du die entsprechende Funktionalität platzierst (insbes das Hinausschreiben des Pfades) musst Du selbst entscheiden - die beiden erforderlichen Codeschnipsel könnten aber etwa so aussehen:
Sub PfadSichern()
Dim sw As StreamWriter
Dim Ini As String = "D:\Pfad.ini"
Dim Pfad As String = Verzeichnis1.Path
sw = New StreamWriter(Ini, False)
sw.WriteLine(Pfad)
sw.Close()
End Sub
Sub PfadSetzen()
Dim sr As StreamReader
Dim Ini As String = "D:\Pfad.ini"
Dim Pfad As String = "D:\" 'Defaultwert
If File.Exists(Ini) Then
sr = New StreamReader(Ini)
If Not sr.EndOfStream Then Pfad = sr.ReadLine
sr.Close()
End If
Laufwerk1.Drive = Pfad
Verzeichnis1.Path = Pfad
End Sub
Grüße
bastla
Hallo listigerTeppich!
Natürlich kannst Du mehrere Variablenwerte auf diese Art speichern:
Durch das Setzen der Defaultwerte in "WerteHolen" wird für den Fall. dass die "ini"-Datei leer oder unvollständig wäre, vorgebeugt (wobei allerdings nicht Zeilen zwischendurch fehlen dürfen) ...
Grüße
bastla
Natürlich kannst Du mehrere Variablenwerte auf diese Art speichern:
Sub WerteSichern()
Dim sw As StreamWriter
Dim Ini As String = "D:\Pfad.ini"
Dim Pfad As String = Verzeichnis1.Path
sw = New StreamWriter(Ini, False)
sw.WriteLine(Pfad)
sw.WriteLine(Variable2)
sw.WriteLine(Variable3)
sw.WriteLine(Variable4)
sw.Close()
End Sub
Sub WerteHolen()
Dim sr As StreamReader
Dim Ini As String = "D:\Pfad.ini"
Dim Pfad As String = "D:\" 'Defaultwert
Dim Variable2 As String = "Default"
Dim Variable3 As String = "Auch Default"
Dim Variable4 As String = "Nochmal Default"
If File.Exists(Ini) Then
sr = New StreamReader(Ini)
If Not sr.EndOfStream Then Pfad = sr.ReadLine
If Not sr.EndOfStream Then Variable2 = sr.ReadLine
If Not sr.EndOfStream Then Variable3 = sr.ReadLine
If Not sr.EndOfStream Then Variable4 = sr.ReadLine
sr.Close()
End If
Laufwerk1.Drive = Pfad
Verzeichnis1.Path = Pfad
End Sub
Grüße
bastla
Hallo listiger Teppich!
Absolut ungetestet etwa so:
Das Trennzeichen ("Delim"; im Beispiel oben "|") solltest Du so wählen, dass es nicht auch innerhalb der Variablenwerte vorkommt.
Geschrieben werden so immer die vorgegebnen Kommentare (zB "Erklärung der Variablen2") - Änderungen an den Kommentaren, die etwa durch direktes Editieren der "ini"-Datei entstanden sind, gehen dabei verloren ...
Grüße
bastla
Absolut ungetestet etwa so:
Sub WerteSichern()
Dim sw As StreamWriter
Dim Delim As String = "|"
Dim Ini As String = "D:\Pfad.ini"
Dim Pfad As String = Verzeichnis1.Path
sw = New StreamWriter(Ini, False)
sw.WriteLine(Pfad)
sw.WriteLine(Variable2 & Delim & "Erklärung der Variablen2")
sw.WriteLine(Variable3 & Delim & "Hinweis zur Variablen3")
sw.WriteLine(Variable4 & Delim & "Info über Variable4")
sw.Close()
End Sub
Sub WerteHolen()
Dim sr As StreamReader
Dim Delim As String = "|"
Dim Ini As String = "D:\Pfad.ini"
Dim Pfad As String = "D:\" 'Defaultwert
Dim Variable2 As String = "Default"
Dim Variable3 As String = "Auch Default"
Dim Variable4 As String = "Nochmal Default"
If File.Exists(Ini) Then
sr = New StreamReader(Ini)
If Not sr.EndOfStream Then Pfad = sr.ReadLine
If Not sr.EndOfStream Then Variable2 = Split(sr.ReadLine, Delim)(0)
If Not sr.EndOfStream Then Variable3 = Split(sr.ReadLine, Delim)(0)
If Not sr.EndOfStream Then Variable4 = Split(sr.ReadLine, Delim)(0)
sr.Close()
End If
Laufwerk1.Drive = Pfad
Verzeichnis1.Path = Pfad
End Sub
Geschrieben werden so immer die vorgegebnen Kommentare (zB "Erklärung der Variablen2") - Änderungen an den Kommentaren, die etwa durch direktes Editieren der "ini"-Datei entstanden sind, gehen dabei verloren ...
Grüße
bastla