vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: TreeView1 speichern 
Autor: ModeratorDieter (Moderator)
Datum: 21.09.02 14:12

Hi Maik,

so - ab sofort lassen sich TreeView-Inhalt mit allem Drum und Dran speichern und wieder einlesen.

Speichern des TreeView-Inhaltes


<code><font color=green>' TreeView-Inhalt speichern</font>
<font color=#000099>Public</font> <font color=#000099>Sub</font> tvw_Save(tvw _
  <font color=#000099>As</font> TreeView, <font color=#000099>ByVal</font> _
  sFile <font color=#000099>As</font> <font color=#000099>String</font>)
  <font color=#000099>Dim</font> F <font color=#000099>As</font> <font _
  color=#000099>Integer</font>
  <font color=#000099>Dim</font> oNode <font color=#000099>As</font> Node
  <font color=#000099>Dim</font> NodeX <font color=#000099>As</font> Node
 
  F = FreeFile
  <font color=#000099>Open</font> sFile <font color=#000099>For</font> <font _
    color=#000099>Output</font> <font color=#000099>As</font> #F
 
  <font color=green>' Alle Einträge speichern</font>
  <font color=#000099>Set</font> oNode = tvw.Nodes(1)
  <font color=#000099>Do</font>
    tvw_SaveItems F, oNode
    <font color=#000099>Set</font> oNode = oNode.<font color=#000099>Next</font>
  <font color=#000099>Loop</font> <font color=#000099>Until</font> oNode Is _
    <font color=#000099>Nothing</font>
  <font color=#000099>Close</font> #F
<font color=#000099>End</font> <font color=#000099>Sub</font></code>

Hilfsfunktionen für das Speichern


<code><font color=green>' TreeView-Einträge speichern</font>
'
<font color=green>' ACHTUNG! Diese Prozedur wird rekursiv für jeden</font>
<font color=green>' Zweig aufgerufen!</font>
'
<font color=#000099>Private</font> <font color=#000099>Sub</font> tvw_SaveItems( _
  <font color=#000099>ByVal</font> F <font color=#000099>As</font> <font _
  color=#000099>Integer</font>, <font color=#000099>ByVal</font> oNode <font _
  color=#000099>As</font> Node)
  <font color=#000099>Dim</font> nIndent <font color=#000099>As</font> <font _
  color=#000099>Integer</font>
  <font color=#000099>Dim</font> sPath <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> sItem() <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> NodeX <font color=#000099>As</font> Node
 
  <font color=#000099>With</font> oNode
    sPath = .FullPath
    sItem = Split(sPath, "\")
    nIndent = <font color=#000099>UBound</font>(sItem)
 
    <font color=green>' Parent-Node</font>
    <font color=#000099>Print</font> #F, tvw_SaveSetData(nIndent, oNode)
 
    <font color=green>' Jetzt alle direkten Child-Nodes</font>
    <font color=#000099>If</font> oNode.Children > 0 <font _
      color=#000099>Then</font>
      <font color=#000099>Set</font> NodeX = oNode.Child
      <font color=#000099>Do</font>
        <font color=#000099>With</font> NodeX
          <font color=#000099>If</font> NodeX.Children > 0 <font _
            color=#000099>Then</font>
            <font color=green>' Prozedur rekursib mit neuem Zwei</font>
            <font color=green>' aufrufen</font>
            tvw_SaveItems F, NodeX
          <font color=#000099>Else</font>
            <font color=green>' Eintrag speichern</font>
            <font color=#000099>Print</font> #F, tvw_SaveSetData(nIndent + 1, _
              NodeX)
          <font color=#000099>End</font> <font color=#000099>If</font>
        <font color=#000099>End</font> <font color=#000099>With</font>
        <font color=#000099>Set</font> NodeX = NodeX.<font _
          color=#000099>Next</font>
      <font color=#000099>Loop</font> <font color=#000099>Until</font> NodeX Is _
      <font color=#000099>Nothing</font>
    <font color=#000099>End</font> <font color=#000099>If</font>
  <font color=#000099>End</font> <font color=#000099>With</font>
<font color=#000099>End</font> <font color=#000099>Sub</font></code>
<code><font color=green>' Alle Infos eines Eintrags zusammenfassen</font>
<font color=#000099>Private</font> <font color=#000099>Function</font> _
  tvw_SaveSetData(<font color=#000099>ByVal</font> nIndent <font _
  color=#000099>As</font> <font color=#000099>Integer</font>, _
  oNode <font color=#000099>As</font> Node) <font color=#000099>As</font> <font _
  color=#000099>String</font>
 
  <font color=#000099>With</font> oNode
    tvw_SaveSetData = <font color=#000099>String</font>$(nIndent, ".") + vbTab _
      + _
      .Key + vbTab + .Text + vbTab + _
      <font color=#000099>CStr</font>(.Image) + vbTab + <font _
      color=#000099>CStr</font>(.SelectedImage) + vbTab + _
      <font color=#000099>CStr</font>(.ForeColor) + vbTab + <font _
      color=#000099>CStr</font>(.BackColor) + vbTab + _
      <font color=#000099>CStr</font>(.Bold) + vbTab + .Tag + vbTab + _
      <font color=#000099>CStr</font>(.Checked) + vbTab + <font _
      color=#000099>CStr</font>(.Expanded) + vbTab + _
      <font color=#000099>CStr</font>(.Sorted)
  <font color=#000099>End</font> <font color=#000099>With</font>
<font color=#000099>End</font> <font color=#000099>Function</font></code>

Laden des Inhaltes aus einer Datei


<code><font color=green>' TreeView-Einträge aus Datei einlesen</font>
<font color=#000099>Public</font> <font color=#000099>Sub</font> tvw_Load(tvw _
  <font color=#000099>As</font> TreeView, <font color=#000099>ByVal</font> _
  sFile <font color=#000099>As</font> <font color=#000099>String</font>)
  <font color=#000099>Dim</font> F <font color=#000099>As</font> <font _
  color=#000099>Integer</font>
  <font color=#000099>Dim</font> sLine <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> sData() <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> nIndent <font color=#000099>As</font> <font _
  color=#000099>Integer</font>
  <font color=#000099>Dim</font> sKey <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> sText <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> nImg <font color=#000099>As</font> <font _
  color=#000099>Integer</font>
  <font color=#000099>Dim</font> nImgSel <font color=#000099>As</font> <font _
  color=#000099>Integer</font>
  <font color=#000099>Dim</font> nForeColor <font color=#000099>As</font> <font _
  color=#000099>Long</font>
  <font color=#000099>Dim</font> nBackColor <font color=#000099>As</font> <font _
  color=#000099>Long</font>
  <font color=#000099>Dim</font> bBold <font color=#000099>As</font> <font _
  color=#000099>Boolean</font>
  <font color=#000099>Dim</font> sTag <font color=#000099>As</font> <font _
  color=#000099>String</font>
  <font color=#000099>Dim</font> bChecked <font color=#000099>As</font> <font _
  color=#000099>Boolean</font>
  <font color=#000099>Dim</font> bExpanded <font color=#000099>As</font> <font _
  color=#000099>Boolean</font>
  <font color=#000099>Dim</font> bSorted <font color=#000099>As</font> <font _
  color=#000099>Boolean</font>
  <font color=#000099>Dim</font> oNode <font color=#000099>As</font> Node
  <font color=#000099>Dim</font> NodeX <font color=#000099>As</font> Node
  <font color=#000099>Dim</font> nLastIndent <font color=#000099>As</font> _
    <font color=#000099>Integer</font>
 
  <font color=green>' Existiert die Datei?</font>
  <font color=#000099>If</font> Dir$(sFile, vbNormal) <> "" <font _
    color=#000099>Then</font>
    <font color=#000099>With</font> tvw
      <font color=green>' Treeview löschen</font>
      .Nodes.Clear
 
      <font color=green>' Darstellung abschalten</font>
      .Visible = <font color=#000099>False</font>
      DoEvents
 
      <font color=green>' Datei zum Lesen öffnen</font>
      F = FreeFile
      <font color=#000099>Open</font> sFile <font color=#000099>For</font> _
        <font color=#000099>Input</font> <font color=#000099>As</font> #F
 
      <font color=green>' Alle Einträge nacheinander einlesen</font>
      nLastIndent = 0
      <font color=#000099>While</font> <font color=#000099>Not</font> EOF(F)
        <font color=#000099>Line</font> <font color=#000099>Input</font> #F, _
          sLine
        sData = Split(sLine, vbTab)
 
        <font color=green>' Zeile in Einzel-Informationen zerlegen</font>
        nIndent = Len(sData(0))
        sKey = sData(1)
        sText = sData(2)
        nImg = Val(sData(3))
        nImgSel = Val(sData(4))
        nForeColor = Val(sData(5))
        nBackColor = Val(sData(6))
        bBold = <font color=#000099>CBool</font>(sData(7))
        sTag = sData(8)
        bChecked = <font color=#000099>CBool</font>(sData(9))
        bExpanded = <font color=#000099>CBool</font>(sData(10))
        bSorted = <font color=#000099>CBool</font>(sData(11))
 
        <font color=#000099>If</font> nIndent = 0 <font _
          color=#000099>Then</font>
          <font color=green>' Root</font>
          <font color=#000099>Set</font> oNode = .Nodes.Add(, , sKey, sText, _
            nImg, nImgSel)
          tvw_LoadSetData oNode, nForeColor, nBackColor, _
            bBold, bChecked, sTag, bExpanded, bSorted
        <font color=#000099>Else</font>
          <font color=green>' Parent ermitteln</font>
          <font color=#000099>If</font> nIndent < nLastIndent <font _
            color=#000099>Then</font>
            <font color=#000099>While</font> nIndent < nLastIndent
              <font color=#000099>Set</font> oNode = oNode.Parent
              nLastIndent = nLastIndent - 1
            <font color=#000099>Wend</font>
          <font color=#000099>ElseIf</font> nIndent > nLastIndent <font _
            color=#000099>And</font> nIndent > 1 <font color=#000099>Then</font>
            <font color=#000099>Set</font> oNode = NodeX
          <font color=#000099>End</font> <font color=#000099>If</font>
 
          <font color=green>' Eintrag hinzufügen</font>
          <font color=#000099>Set</font> NodeX = .Nodes.Add(oNode, tvwChild, _
            sKey, sText, nImg, nImgSel)
          tvw_LoadSetData NodeX, nForeColor, nBackColor, _
            bBold, bChecked, sTag, bExpanded, bSorted
        <font color=#000099>End</font> <font color=#000099>If</font>
 
        nLastIndent = nIndent
      <font color=#000099>Wend</font>
 
      <font color=green>' Darstellung wieder einschalten</font>
      .Visible = <font color=#000099>True</font>
 
    <font color=#000099>End</font> <font color=#000099>With</font>
    <font color=#000099>Close</font> #F
  <font color=#000099>End</font> <font color=#000099>If</font>
<font color=#000099>End</font> <font color=#000099>Sub</font></code>

Hilfsfunktion für das Einlesen


<code><font color=green>' Setze alle gespeicherten Eigenschaften eines</font>
<font color=green>' einzelnen TreeView-Eintrages</font>
<font color=#000099>Private</font> <font color=#000099>Sub</font> _
  tvw_LoadSetData(oNode <font color=#000099>As</font> Node, _
  <font color=#000099>ByVal</font> nForeColor <font color=#000099>As</font> _
  <font color=#000099>Long</font>, <font color=#000099>ByVal</font> nBackColor _
  <font color=#000099>As</font> <font color=#000099>Long</font>, _
  <font color=#000099>ByVal</font> bBold <font color=#000099>As</font> <font _
  color=#000099>Boolean</font>, <font color=#000099>ByVal</font> bChecked <font _
  color=#000099>As</font> <font color=#000099>Boolean</font>, _
  <font color=#000099>ByVal</font> sTag <font color=#000099>As</font> <font _
  color=#000099>String</font>, <font color=#000099>ByVal</font> bExpanded <font _
  color=#000099>As</font> <font color=#000099>Boolean</font>, _
  <font color=#000099>ByVal</font> bSorted <font color=#000099>As</font> <font _
  color=#000099>Boolean</font>)
 
  <font color=#000099>With</font> oNode
    .ForeColor = nForeColor
    .BackColor = nBackColor
    .Bold = bBold
    .Checked = bChecked
    .Tag = sTag
    .Expanded = bExpanded
    .Sorted = bSorted
  <font color=#000099>End</font> <font color=#000099>With</font>
<font color=#000099>End</font> <font color=#000099>Sub</font></code>

Aufruf der Funktionen


Speichern des aktuellen Inhaltes


tvw_Save TreeView1, App.Path & "myTreeView.dat"

Laden der gespeicherten Daten


tvw_Load TreeView1, App.Path & "myTreeView.dat"
So, das war's....

Viel Spaß mit dem Code.

Cu
Dieter
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TreeView1 speichern84Diablo2k20.09.02 15:01
Re: TreeView1 speichern436ModeratorDieter21.09.02 14:12
Re: TreeView1 speichern48Diablo2k24.09.02 16:41

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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