ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 17.09.2001

Diese Seite wurde zuletzt aktualisiert am 17.09.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Listen sichern

Zurück...


Anzeige

(-hg) mailto:hg_lbcbtosettings@aboutvb.de

Mit den VB-Methoden SaveSetting und GetSetting können Sie Daten in der Windows-Registrierung ablegen, die somit das Beenden Ihrer Anwendung überstehen und beim nächsten Start wieder eingelesen werden können. Für einzelne Werte ist dies recht trivial - doch wie können Sie den kompletten Inhalt einer ListBox oder einer ComboBox einschließlich Markierungszustand und ListIndex sichern und wieder einlesen?

Die folgenden Funktionen erledigen dies für Sie. Sie übergeben mindestens im ersten Parameter die betreffende ListBox bzw. ComboBox an. Die Angaben für AppName und Section sind optional - lassen Sie diese weg, werden automatisch der Anwendungsname und die Standardbegriff "ListBox" bzw. "ComboBox" verwendet. Der Schlüssel (Key) ist ebenfalls optional - fehlt er, wird der Name der ListBox bzw. der ComboBox verwendet. Es liegt an Ihnen, für entsprechend eindeutige Bezeichnungen zu sorgen, wenn mehr als eine Listbox bzw. ComboBox gesichert werden sollen. Wenn Ihnen die Standard-Gliederung zu flach ist, können Sie auch tiefer verschachtelte Section-Angaben wählen (siehe: "Verzweigte Settings" khwsettingsmorekeys.htm).

Auf einer solchen Verschachtelung beruht auch die eigentliche Speicherung der Listen-Elemente. Die Bezeichnungen von Section und Key werden nämlich nach diesem Prinzip zusammengefügt (durch einen "\" voneinander getrennt) als Section an SaveSetting übergeben - als Key dient statt dessen der einfache fortlaufende Index jedes Listenelements. Nur der aktuelle ListIndex wird als bezeichneter Key "ListIndex" angegeben.

Die Speicherung der Markierungen (Selection) der Elemente wird bei der ListBox durch Voranstellen einer 0 bzw. einer 1 vor den Text eines Elements abgelegt und beim Einlesen ausgewertet. Der ListIndex wird in jedem Fall (der Aufwand ist ja praktisch ohne Bedeutung) mit abgelegt und nur bei Bedarf eingelesen und gesetzt, wenn der optionale Parameter RestoreListIndex von LBGetSettings bzw. CBGetSettings auf True gesetzt ist (Voreinstellung = True).

Mit den beiden Prozeduren LBDeleteSettings bzw. CBDeleteSettings können Sie die Einträge aus der Windows-Registrierung entfernen.

Public Sub LBSaveSettings(ListBox As ListBox, _
 Optional ByVal AppName As String, Optional ByVal Section As String, _
 Optional Key As String)

  Dim l As Long
  
  With ListBox
    If Len(AppName) = 0 Then
      AppName = App.Title
    End If
    If Len(Section) = 0 Then
      Section = "ListBox"
    End If
    If Len(Key) Then
      Section = Section & "\" & Key
    Else
      Section = Section & "\" & .Name
    End If
    On Error Resume Next
    DeleteSetting AppName, Section
    On Error GoTo 0
    SaveSetting AppName, Section, "ListIndex", .ListIndex
    For l = 0 To .ListCount - 1
      SaveSetting AppName, Section, CStr(l), Abs(.Selected(l)) & .List(l)
    Next 'l
  End With
End Sub

Public Sub LBGetSettings(ListBox As ListBox, _
 Optional ByVal AppName As String, Optional ByVal Section As String, _
 Optional Key As String, _
 Optional ByVal RestoreListIndex As Boolean = True)

  Dim nItems As Variant
  Dim l As Long
  
  With ListBox
    If Len(AppName) = 0 Then
      AppName = App.Title
    End If
    If Len(Section) = 0 Then
      Section = "ListBox"
    End If
    If Len(Key) Then
      Section = Section & "\" & Key
    Else
      Section = Section & "\" & .Name
    End If
    .Clear
    nItems = GetAllSettings(AppName, Section)
    If Not IsEmpty(nItems) Then
      For l = 1 To UBound(nItems)
        .AddItem Mid$(nItems(l, 1), 2)
        .Selected(.NewIndex) = CBool(CInt(Left$(nItems(l, 1), 1)))
      Next 'l
      If RestoreListIndex Then
        .ListIndex = nItems(0, 1)
      End If
    End If
  End With
End Sub

Public Sub LBDeleteSettings(ListBox As ListBox, _
 Optional ByVal AppName As String, Optional ByVal Section As String, _
 Optional Key As String)

  With ListBox
    If Len(AppName) = 0 Then
      AppName = App.Title
    End If
    If Len(Section) = 0 Then
      Section = "ListBox"
    End If
    If Len(Key) Then
      Section = Section & "\" & Key
    Else
      Section = Section & "\" & .Name
    End If
  End With
  On Error Resume Next
  DeleteSetting AppName, Section
End Sub

Public Sub CBSaveSettings(ComboBox As ComboBox, _
 Optional ByVal AppName As String, Optional ByVal Section As String, _
 Optional Key As String)

  Dim l As Long
  
  With ComboBox
    If Len(AppName) = 0 Then
      AppName = App.Title
    End If
    If Len(Section) = 0 Then
      Section = "ComboBox"
    End If
    If Len(Key) Then
      Section = Section & "\" & Key
    Else
      Section = Section & "\" & .Name
    End If
    On Error Resume Next
    DeleteSetting AppName, Section
    On Error GoTo 0
    SaveSetting AppName, Section, "ListIndex", .ListIndex
    For l = 0 To .ListCount - 1
      SaveSetting AppName, Section, CStr(l), .List(l)
    Next 'l
  End With
End Sub

Public Sub CBGetSettings(ComboBox As ComboBox, _
 Optional ByVal AppName As String, Optional ByVal Section As String, _
 Optional Key As String, _
 Optional ByVal RestoreListIndex As Boolean = True)

  Dim nItems As Variant
  Dim l As Long
  
  With ComboBox
    If Len(AppName) = 0 Then
      AppName = App.Title
    End If
    If Len(Section) = 0 Then
      Section = "ComboBox"
    End If
    If Len(Key) Then
      Section = Section & "\" & Key
    Else
      Section = Section & "\" & .Name
    End If
    .Clear
    nItems = GetAllSettings(AppName, Section)
    If Not IsEmpty(nItems) Then
      For l = 1 To UBound(nItems)
        .AddItem nItems(l, 1)
      Next 'l
      If RestoreListIndex Then
        .ListIndex = nItems(0, 1)
      End If
    End If
  End With
End Sub

Public Sub CBDeleteSettings(ComboBox As ComboBox, _
 Optional ByVal AppName As String, Optional ByVal Section As String, _
 Optional Key As String)

  With ComboBox
    If Len(AppName) = 0 Then
      AppName = App.Title
    End If
    If Len(Section) = 0 Then
      Section = "ComboBox"
    End If
    If Len(Key) Then
      Section = Section & "\" & Key
    Else
      Section = Section & "\" & .Name
    End If
  End With
  On Error Resume Next
  DeleteSetting AppName, Section
End Sub

Beispiel-Projekt und Modul modLBCBtoSettings (lbcbtosettings.zip - ca. 3,6 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer