Suchen-Dialog im Array mit Klassenmodul

Set, Input, Output, Append, FreeFile, KanalNummer, Close
Prozeduren im Formular
Private Sub Form_Load() Laden des Formulars.
pos = 1 Position des Arrays = 1.
imgfoto.Stretch = True
 With frmadr Formulargröße mit Minimalwerten.
  .Height = 3000
  .Width = 3700
 End With
End Sub
Private Sub cmdLesenAusDatei_Click()
Dim index%
Dim leseklasse As CLesen Klasse für Lesevorgänge.
 Set leseklasse = New CLesen
 Call leseklasse.liesmich(index)
 Call anzeigen
End Sub
Private Sub SpeichernInDatei_Click()
Dim index%
Dim klasse As CSpeichern Klasse für Speichervorgänge.
 Set klasse = New CSpeichern
 Call klasse.speichern(index)
 Call save
End Sub
Private Sub cmdsuch_Click()
Dim strvergleich As String
Dim index%
Dim suchklasse As CSuchen Klasse für Suchvorgänge.
 Set suchklasse = New CSuchen
 strvergleich = txtsuch.Text
 Call suchklasse.suchen(strvergleich)
End Sub
Private Sub imgfoto_Click()
 dialog1.ShowOpen
 imgfoto.Picture = LoadPicture(dialog1.FileName)
 liste(pos).strbild = dialog1.FileName
 Call save
End Sub
Private Sub cboName_Click()
 pos = cboName.ListIndex + 1
 Call anzeigen
End Sub
Private Sub cmderweitert_Click()
 With frmadr
  .Height = 4500
  .Width = 7000
 End With
End Sub
Private Sub cmdLaden_Click()
 cmdLaden.Visible = False
End Sub
Private Sub cmdrueck_Click()
 If pos < max Then
  Call save
  pos = pos + 1
  Call anzeigen
 Else
  MsgBox "Dateiende", vbInformation, "Info"
 End If
End Sub
Private Sub cmdvor_Click()
 If pos > 1 Then
  Call save
  pos = pos - 1
  Call anzeigen
 Else
  MsgBox "Dateianfang", vbInformation, "Info"
 End If
End Sub
Private Sub cmdweniger_Click()
 With frmadr
  .Height = 3000
  .Width = 3700
 End With
End Sub
Prozeduren im Modul_1
Public Const max% = 10 Array mit zehn Feldern.
Public Type TPerson Nutzerdefinierter Datentyp.
 intnr As Integer Zähler (Kundennummer).
 strname As String Nachname.
 strvorname As String Vorname.
 strtel As String Telefonnummer.
 strbild As String Bild, Photo...
End Type
Public liste(1 To max) As TPerson Definieren der Strukturvariablen.
Public pos%
Public Sub save() Speichert Änderungen im Array.
 liste(pos).intnr = Val(frmadr.txtnr.Text)
 liste(pos).strname = frmadr.cboName.Text
 liste(pos).strvorname = frmadr.txtvorname.Text
 liste(pos).strtel = frmadr.txttel.Text
End Sub
Public Sub anzeigen() Array füllt Werte in die TextBox.
 frmadr.txtnr = Str$(pos)
 frmadr.cboName = liste(pos).strname
 frmadr.txtvorname = liste(pos).strvorname
 frmadr.txttel = liste(pos).strtel
 frmadr.imgfoto.Picture = LoadPicture(liste(pos).strbild)
End Sub
Prozeduren im Klassenmodul CLesen
Public Sub liesmich(ByVal lies As Variant) Lesen aus Datei.
Dim knr%, index%
Dim t1$, t2$, t3$, t4$, t5$
Die "FreeFile"-Funktion ermittelt die nächste freie
knr = FreeFile Kanalnummer (File number).
index = 1
frmadr.dialog1.ShowOpen CommonDialog aufrufen.
Open frmadr.dialog1.FileName For Input As #knr Öffnet Textdatei für sequentiellen Lesezugriff.
 While Not EOF(knr)
  Input #knr, t1, t2, t3, t4, t5
   liste(index).intnr = t1 Von der Datei in den Hauptspeicher lesen, um
   liste(index).strbild = t2 anschließend in die ComboBox zu schreiben.
   liste(index).strname = t3
   liste(index).strtel = t4
   liste(index).strvorname = t5
   frmadr.cboName.AddItem liste(index).strname Laden der ComboBox.
   index = index + 1
 Wend
Close #knr Textdatei schließen. Die Kanalnummer wird freigegeben.
End Sub
Prozeduren im Klassenmodul CSpeichern
Public Sub speichern(ByVal speich As Variant) Speichern in Datei.
Dim knr%, index%, raus$
knr = FreeFile Die "FreeFile"-Funktion ermittelt die nächste freie
index = 1 Kanalnummer (File number).
On Error Resume Next
frmadr.dialog1.ShowOpen CommonDialog aufrufen.
Open frmadr.dialog1.FileName For Output As #knr Öffnet Textdatei für sequentiellen Schreibzugriff.
 For index = 1 To max
  raus = liste(index).intnr & "," & liste(index).strbild & "," & liste(index).strname _
    & "," & liste(index).strtel & "," & liste(index).strvorname
  Print #knr, raus String wird in Textdatei geschrieben.
 Next index
Close #knr Textdatei schließen. Die Kanalnummer wird freigegeben.
End Sub
Prozeduren im Klassenmodul CSuchen
Public Sub suchen(ByVal strsu As String) Suchen in Datei.
Dim index As Integer
Dim counter As Integer
Dim gefunden(10) As TPerson
Dim straus As String
counter = 0
index = 1
Call save
 While index <= max
  If LCase(strsu) Like LCase(liste(index).strname) Or LCase(strsu) Like LCase(liste(index).strvorname) Then
   counter = counter + 1
   gefunden(counter) = liste(index)
   index = index + 1
  Else
   index = index + 1
  End If
 Wend
 If counter <> 0 Then Ausgabe des gesuchten Strings in einer MsgBox.
  For index = 1 To counter
   straus = straus & gefunden(index).strname & " " & gefunden(index).strvorname & " " & _
   gefunden(index).strtel & " " & vbCrLf
  Next index
  MsgBox straus, vbInformation, "Suche"
 Else
  MsgBox "Der Name wurde nicht gefunden", vbInformation, "Suche"
 End If
End Sub



 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info