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-2024
 
zurück
Rubrik: OOP / Tools   |   VB-Versionen: VB5, VB601.09.02
DiaShow - Marke Eigenbau

Wir erstellen Schritt für Schritt ein DiaShow-Programm, mit welchem sich alle Bilder eines Ordners entweder nacheinander oder in zufälliger Reihenfolge anzeigen lassen.

Autor:  Dieter Otter / MartoengBewertung:     [ Jetzt bewerten ]Views:  17.426 

Wir erstellen Schritt für Schritt ein DiaShow-Programm, mit welchem sich alle Bilder eines Ordners entweder nacheinander oder in zufälliger Reihenfolge anzeigen lassen.

Anforderung und Vorbereitungen

Was soll das Programm können?

  • Freie Wahl des Ordners, aus dem die Bilder angezeigt werden sollen
  • nur bestimmte Dateitypen berücksichtigen (z.B. nur JPG-Dateien) oder alle von VB unterstützten Bildformate
  • Bilder nacheinander oder in zufälliger Reihenfolge abspielen
  • manuelles Vor- bzw. Zurückblättern
  • Pausefunktion
  • Programm optional über Aufrufparameter steuerbar (Angabe des Quellordners usw.)

Freie Auswahl des Ordners
Hierfür möchten wir den Standard-Ordner-Dialog verwenden. Da uns dieser in VB aber nicht direkt zur Verfügung steht, bedienen wir uns dem BAS-Modul aus dem Workshop  Ordnerauswahl-Dialog in VB.

Ermitteln aller oder nur bestimmter Dateien eines Ordners
Diesen Vorgang überlassen wir (faul wie wir sind) der Standard FileList-Box von VB. Über die Pattern-Eigenschaft legen wir den Filter fest (z.B. *.jpg;*.gif), setzen dann die Path-Eigenschaft auf das Verzeichnis mit den Bildern und rufen schlussendlich die Refresh-Methode auf. Und schon bekommen wir die Dateinamen aller Bilder in der FileList-Box angezeigt. Dies soll für den Anwender unseres DiaShow-Programms aber nicht sichtbar sein, also setzen wir noch Visible auf den Wert False.

Programm optional über Aufrufparameter steuerbar
Folgende Aufruf-Parameter soll unser DiaShow-Programm unterstützen:

  • i: Info anzeigen
  • cmd: Programmparameter anzeigen
  • psi: Läuft bereits eine Instance (PrevInstance) wird das Programm beendet
  • filter: Bildfilter bzw. Verzeichnisvorgabe
Die Parameter, die beim Starten der EXE-Datei angegeben wurde, lassen sich in VB über die Command$-Funktion abfragen (näheres hierzu später).

Gestaltung und Oberfläche

Unser DiaShow-Programm besteht selbst nur aus einer einzigen Form - dem Viewer (oder Bildbetrachter) selbst. Hierbei soll immer der gesamte zur Verfügung stehende Bildschirmbereich abgedeckt werden - Vollbildmodus ist angesagt. Die Bilder selbst sollen immer in der Mitte der Form dargestellt werden. Für die manuelle Steuerung des Bildablaufs möchten wir eine kleine "Toolbar-Bar" ganz oben links angezeigt bekommen.

Erstellen des Projekts
Starten Sie Microsoft Visual Basic und erstellen Sie ein neues Projekt vom Typ Standard-EXE. Bevor wir die benötigten Steuerelemente auf die Form ziehen, fügen wir dem Projekt zunächst die Microsoft Windows Common Controls hinzu. Diese (oder besser das ToolBar und das ImageList-Control) benötigen wir für unsere kleine Toolbar-Bar oben links.

Die Oberfläche
Nun beginnen wir mit dem Oberflächen-Design. Aber vorher ändern wir noch schnell den Namen der Form1 und machen daraus frmView, für Caption tragen wir "DiaShow" ein. Da wir einen Vollbild-Viewer ohne Titelzeile möchten setzen wir die Eigenschaft BorderStyle = 0 - Kein. Als Hintergrundfarbe wählen wir schwarz, also BackColor = &H00000000&. Wie bereits mehrfach erwähnt benötigen wir das ToolBar-Control für die Steuerung des Bildablaufs. Also ziehen wir das Control auf die Form und legen folgende Eigenschaften fest:

DiaShow - Toolbar
NametbrMain
Align0 - vbAlignNone
ButtonHeight 330
ButtonWidth 345
Style1 - tbrFlat


Die Bildsymbole der Toolbar werden in einem Abbildungslisten-Steuerelement abgelegt (ImageList).

Als nächstes fügen wir der ImageList die nachfolgenden Symbole hinzu:

ImageList mit Symbolen
play Play
pause Pause
random Random
prev Prev
next Next
browse Browse
exit Exit

Nebenstehende Abbildung zeigt den Eigenschaften-Dialog des ImageList-Controls, über den die Bildsymbole hinzugefügt werden.

Download Bildsymbole:  diashow_buttons.zip (2 KB)

Das autom. Anzeigen des nächsten Bildes erfolgt zeitgesteuert über ein Timer-Control, (tmrNext) das Sie ebenfalls auf der Form platzieren. Jetzt brauchen wir noch das FileList-Control (File1), sowie ein Image-Control imgPicture) für die Anzeige des Bildes.

Oberfläche von frmView
Die fertig gestaltete Oberfläche von frmView

Code-Grundgerüst

Jetzt geht's ans Eingemachte - ans Proggen
Fügen Sie nachfolgenden Code in den Allgemein-Teil der Form ein:

Option Explicit
 
' API-Funktion, um das Fenster in den Vordergrund zu schieben
Private Declare Function SetForegroundWindow Lib "USER32" ( _
  ByVal hwnd As Long) As Long
 
' Index des aktuellen Bildes (in der FileListBox)
Private PicIndex As Integer
 
' Die alten Mauskoordinaten
Private OldX As Integer, OldY As Integer
 
' Status-Konstanten
Private Enum STATE_CONSTANTS
  ST_PLAYING = 0
  ST_PAUSED = 1
End Enum
 
' Auswahl-Konstanten (chronologisch oder zufällig)
Private Enum CHOOSE_CONSTANTS
  CHOOSE_NORMAL = 0
  CHOOSE_RANDOM = 1
End Enum
 
' Auswahlmodus
Private ChooseMode As CHOOSE_CONSTANTS
 
' Status
Private State As STATE_CONSTANTS
 
' Wie viele Listeneinträge bisher gezeigt wurden
Private SelCount As Integer

Beim Laden der Form (also noch bevor diese sichtbar wird) sind erst einmal einige Dinge zu erledigen:

  • Darstellung im Vollbildmous
  • Erstellen der Toolbarsymbole
  • Aufrufparameter auswerten
  • ggf. Ordner-Auswahl-Dialog anzeigen
  • Ermitteln der Bilddateien
Private Sub Form_Load()
  ' Breite und Höhe dem Bildschirm anpassen (Vollbild)
  Me.Move 0, 0, Screen.Width, Screen.Height
 
  With tbrMain
    ' ImageList zuweisen
    Set .ImageList = ImageList1
 
    ' Toolbar mit Buttons versehen
    .Buttons.Add , "play", "", 2, "play"
    .Buttons.Add , "pause", "", 2, "pause"
    .Buttons.Add , "random", "", 1, "random"
    .Buttons.Add , "", "", 3
    .Buttons.Add , "prev", "", 0, "prev"
    .Buttons.Add , "next", "", 0, "next"
    .Buttons.Add , "", "", 3
    .Buttons.Add , "browse", "", 0, "browse"
    .Buttons.Add , "", "", 3
    .Buttons.Add , "exit", "", 0, "exit"
 
    ' Toolbar mit QuickInfos versehen
    .Buttons("play").ToolTipText = "Play"
    .Buttons("pause").ToolTipText = "Pause (P)"
    .Buttons("random").ToolTipText = "Zufällige Auswahl (RandomPlay)"
    .Buttons("prev").ToolTipText = "Vorheriges Bild (nach links)"
    .Buttons("next").ToolTipText = "Nächstes Bild (nach rechts)"
    .Buttons("browse").ToolTipText = "Durchsuchen... (Strg+O)"
    .Buttons("exit").ToolTipText = "Verlassen der Diashow (ESC)"
 
    ' Toolbar zunächst ausblenden
    .Visible = False
  End With
 
  ' alle Bilddateien
  With File1
    .Pattern = "*.jpeg;*.jpg;*.gif;*.bmp;*.wmf;*.emf;*.rle;*.ico;*.cur"
    .Visible = False
  End With
 
  ' Timer-Intervall: 5 Sekunden
  tmrNext.Enabled = False
  tmrNext.Interval = 5000
 
  ' Zufallsgenerator initialisieren
  Randomize -Timer
 
  Dim cmd As String
 
  ' Aus der Registry auslesen, ob zuletzt
  ' "Zufällige Wiedergabe" aktiviert war
  cmd = GetSetting("Martoeng", "Diashow", "ChooseMode", "")
 
  If cmd <> "" Then
    tbrMain.Buttons("random").Value = CLng(cmd)
    ChooseMode = CLng(cmd)
  End If
 
  ' Commandline auslesen und auf Parameter überprüfen
  cmd = Command
  If cmd <> "" Then
 
    ' Kommandozeile überprüfen
    If cmd Like "*/psi*" Or cmd Like "*-psi*" Then
      ' Keine zweite Instanz der EXE anlegen
      If App.PrevInstance = True Then
        Unload Me: Exit Sub
      End If
    End If
 
    If cmd Like "/i*" Or cmd Like "-i*" Then
      ' Info
      ShowInfo
      If Not Browse Then Browse
 
    ElseIf cmd Like "/cmd*" Or cmd Like "-cmd*" Then
      ' Alle Kommandos ausgeben
      ShowCommands
      If Not Browse Then Unload Me: Exit Sub
 
    ElseIf cmd Like "*.???" Then
      ' Dateiliste erstellen
      On Error GoTo err_Path
      File1.Path = Trim$(Mid$(cmd, 1, InStrRev(cmd, "\")))
      If File1.ListCount > 0 Then
        If MsgBox("Möchten Sie nur diese Datei ansehen " & _
          "(alternativ wird der gesamte Ordner gezeigt)?", _
          vbQuestion + vbYesNo, "Datei anzeigen") = vbYes Then
          File1.Pattern = Trim(Mid(cmd, InStrRev(cmd, "\") + 1))
        Else
          ' gesamter Ordner
          NextPic
          tmrNext.Enabled = True
        End If
      Else
        NextPic
      End If
    Else
      On Error GoTo err_Path
      File1.Path = cmd
      tmrNext.Enabled = True
    End If
  Else
    ' Bei keinen Optionen
    If Not Browse Then Unload Me: Exit Sub
  End If
 
  ' Index auf -1, Eigenschaften setzen
  PicIndex = -1
  If tmrNext.Enabled = False Then NextPic
  If File1.ListCount = 1 Then
    State = ST_PAUSED
    tbrMain.Buttons("pause").Value = tbrPressed
  Else
    tbrMain.Buttons("play").Value = tbrPressed
    State = ST_PLAYING
    tmrNext.Enabled = True
  End If
  Me.MousePointer = 99  
  Exit Sub
 
err_Path:
  ' Fehler aufgetreten
  Err.Clear
  On Error GoTo 0
  If MsgBox("Der angegebene Pfad wurde nicht gefunden. " & _
    "Möchten Sie jetzt einen Pfad auswählen?", _
    vbQuestion + vbYesNo) = vbYes Then
 
    If Not Browse Then End
  Else
    End
  End If
End Sub
Private Sub Form_GotFocus()
  ' In den Vordergrund
  SetForegroundWindow Me.hwnd
End Sub
Private Sub ShowInfo()
  ' Info über das Programm / den Autor
  MsgBox "Martin Walter Diashow 2002" & vbCrLf & vbCrLf & _
    "Copyright (c) 2002 by Martin Walter. Alle Rechte vorbehalten." & _
    "All rights reserved.", vbInformation, "Diashow 2002"
End Sub
Private Sub ShowCommands()
  ' mögliche Aufrufparameter anzeigen
  MsgBox "Diashow 2002 kann mit folgenden Parametern gestartet werden:" & _
    vbCrLf & vbCrLf & "/i  Programm-Information" & _
    vbCrLf & "/cmd  Programm-Parameter auflisten" & _
    vbCrLf & "/psi  Falls d. Programm bereits ausgeführt wird, " & _
    "nicht fortfahren", vbInformation, "Diashow 2002"
End Sub

Ordnerauswahl...
Wird beim Starten des Programms kein Verzeichnispfad in der Parameterliste angegeben, soll der Standard-Ordnerauswahl-Dialog angezeigt werden.

Private Function Browse() As Boolean
  ' Standard-Ordner-Dialog
  Dim sPath As String
 
  tmrNext.Enabled = False
  sPath = BrowseForFolder("Wählen Sie einen Ordner aus.")
 
  If sPath <> "" Then
    ' Dateiliste aktualisieren
    File1.Path = sPath
    If File1.ListCount = 0 Then
      ' keine Bilddateien gefunden
      MsgBox "Keine passenden Dateien im Ordner" & vbCrLf & _
        Chr(34) & sPath & Chr(34) & vbCrLf & "gefunden.", _
        vbExclamation
    ElseIf File1.ListCount = 1 Then
      ' exakt 1 Bild vorhanden
      PicIndex = -1
      NextPic
    Else
      ' mehr als 1 Bild...
      PicIndex = -1
      NextPic
 
      ' Timer starten
      tmrNext.Enabled = True
    End If
  Else
    If File1.ListCount > 1 Then tmrNext.Enabled = True
  End If
 
  Browse = (sPath <> "")
  SelCount = 0
End Function

Autom. Bildauswahl

Sollen die Bilder der Reihe nach angezeigt werden, brauchen wir uns lediglich den Index des aktuellen Bildes zu merken und dann jeweils um eins erhöhen - solange bis alle Bilder an der Reihe waren. Dann geht's von vorne los.

Erfolgt die Bildauswahl zufällig, müssen wir uns merken, welche Bilder bereits angezeigt wurden, so dass es nicht vorkommt, dass ein Bild mehrfach angezeigt wird, und andere überhaupt nicht. Auch hier bestätigt uns das FileList-Control, dass wir mit "ihm" die richtige Wahl getroffen haben, denn: das FileList-Control erlaubt es, eine erweiterte Mehrfach-Auswahl einzustellen (MultiSelect = 2), so dass wir über die Selected-Eigenschaft eines jeden einzelnen Eintrags festlegen können, ob ein Bild bereits angezeigt wurde (Selected = True) oder noch nicht (Selected = False).

Wichtig!
Die Eigenschaft MultiSelect = 2 muss zur Designzeit festgelegt werden, da es sich bei dieser Eigenschaft um eine zur Laufzeit schreibgeschützte Eigenschaft handelt.

' Nächstes Bild
Private Sub NextPic()
  ' Überprüfen, ob Dateien vorhanden
  If File1.ListCount = 0 Then
    MsgBox "Keine Dateien gefunden.", vbExclamation
    Unload Me
    End
  End If
 
  ' Fehlerbehandlung aktivieren
  On Error GoTo err_NextPic
 
  ' Index erhöhen
  PicIndex = PicIndex + 1
  If picIndex > File1.ListCount Then GoTo End_NextPic
 
  ' Vorhandenes Bild entfernen
  Set imgPicture.Picture = Nothing
  imgPicture.Visible = False
  imgPicture.Stretch = False
 
  ' Auswahlmodus überprüfen
  If ChooseMode = CHOOSE_NORMAL Then
    ' nächstes Bild
    imgPicture.Picture = LoadPicture(IIf(Right(File1.Path, 1) = "\", _
      File1.Path, File1.Path & "\") & File1.List(PicIndex))
  Else
    ' zufällige Auswahl...
    Dim n As Integer
    PicIndex = PicIndex - 1
    If PicIndex <> -1 Then File1.Selected(PicIndex) = True
    SelCount = SelCount + 1
    If SelCount = File1.ListCount Then
      State = ST_PAUSED
      For n = 0 To File1.ListCount - 1
        File1.Selected(n) = False
      Next n
    Else
      Randomize
      Do
        n = Int(Rnd * File1.ListCount)
      Loop While File1.Selected(n) = True
      PicIndex = n
      imgPicture.Picture = LoadPicture(IIf(Right(File1.Path, 1) = "\", _
        File1.Path, File1.Path & "\") & File1.List(PicIndex))
    End If
  End If
 
  ' Falls über den Bildschirmrand hinaus, das Bild anpassen
  With imgPicture
    If (.Width > Me.ScaleWidth) Or (.Height > Me.ScaleHeight) Then
      .Stretch = True
      Dim ratio As Double
 
      ' Verhältnis berechnen
      ratio = .Width / .Height
      If .Width > Me.ScaleWidth Then
        .Width = Me.ScaleWidth
        .Height = .Height / ratio
      End If
      If .Height > Me.ScaleHeight Then
        .Height = Me.ScaleHeight
        .Width = .Height * ratio
      End If
      .Left = Me.ScaleWidth / 2 - .Width / 2
      .Top = Me.ScaleHeight / 2 - .Height / 2
    Else
      .Left = Me.ScaleWidth / 2 - .Width / 2
      .Top = Me.ScaleHeight / 2 - .Height / 2
    End If
 
    ' Wieder einblenden
    .Visible = True
  End With
 
End_NextPic:
  If PicIndex > File1.ListCount Then PicIndex = -1
  Exit Sub
 
err_NextPic:
  MsgBox Err.Description & vbCrLf & vbCrLf & _
    "Aktuelles Bild: " & File1.List(PicIndex), _
    vbExclamation, "Fehler Nr. " & Err.Number
End Sub

Die Prozedur NextPic ermittelt nicht nur das nächste Bild, sondern zeigt dieses auch gleich an. Sollte das Bild größer als die Form sein, wird dieses automatisch an die Form angepasst. Hierzu muss das Seitenverhältnis berechnet werden. Das Bild ist bspw. 800 x 600 Pixel groß, während der Bildschirm nur 640 x 480 Pixel hat. Das Verhältnis ist 4:3 (1,3333333). Somit wird die Breite des Bildes auf die Bildschirmbreite reduziert und die Höhe der neuen Breite angepasst: Höhe = Breite / Verhältnis (Höhe = 640 / 1,3333). Die Stretch-Eigenschaft muss dann natürlich wieder True gesetzt werden.

Unsere Toolbar oben links auf der Form verfügt u. a. über ein Symbol zum Anzeigen des vorherigen Bildes. Hierzu verringern wir den aktuellen Bildindex einfach um den Wert 2 und rufen anschließend wieder NextPic auf.

' Vorheriges Bild
Private Sub PrevPic()
  ' Den Index auf Index - 2 setzen, dann NextPic aufrufen
  If PicIndex > 0 Then
    PicIndex = PicIndex - 2
  Else
    PicIndex = File1.ListCount - 2
  End If
  NextPic
End Sub

Manuelle Steuerung des Bildablaufs

Die kleine Toolbar oben links soll nur angezeigt werden, wenn der Mauszeiger bewegt wird, andernfalls bleibt sie ausgeblendet.

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
  x As Single, y As Single)
 
  ' Bei größerer Mausbewegung Toolbar einblenden
  If (Abs(OldX - x) > 100 Or Abs(OldY - y) > 100) And _
    Not (OldX = 0 And OldY = 0) Then
 
    tmrNext.Enabled = False
    tbrMain.Visible = True
    tmrNext.Enabled = True
    Me.MousePointer = 0
  End If
 
  OldX = x
  OldY = y
End Sub

Ist die Toolbar ausgeblendet, soll auch kein Mauszeiger sichtbar sein. Hierzu bedienen wir uns eines ganz einfachen Tricks. Wir setzen die Form-Eigenschaft MouseIcon auf eine leere Cursor-Datei. Wenn wir nun zusätzlich noch MousePointer = 99 einstellen, verschwindet der Mauszeiger

Download Mauszeiger:  nocursor.zip (1 KB)

Funktionen der Toolbar:

Private Sub tbrMain_ButtonClick( _
  ByVal Button As MSComctlLib.Button)
 
  Select Case Button.Key
    Case "play"
      ' Diashow abspielen
      If SelCount = File1.ListCount Then
        For SelCount = 0 To File1.ListCount - 1
          File1.Selected(SelCount) = False
        Next SelCount
        SelCount = 0
      End If
      State = ST_PLAYING
 
    Case "pause"
      ' Pause
      State = ST_PAUSED
 
    Case "random"
      ' Zufällige Bildauswahl ein/aus
      If Button.Value = tbrPressed Then
        ChooseMode = CHOOSE_RANDOM
      Else
        ChooseMode = CHOOSE_NORMAL
      End If
 
    Case "prev"
      ' Voriges Bild
      PrevPic
 
    Case "next"
      ' Nächstes Bild
      NextPic
 
    Case "browse"
      ' Ordner auswählen
      tbrMain.Buttons("pause").Value = tbrPressed
      State = ST_PAUSED
      Browse
 
    Case "exit"
      ' Beenden
      Set imgPicture.Picture = Nothing
      Unload Me
  End Select
End Sub

Ist die Toolbar ausgeblendet, soll es möglich sein, die Steuerung auch per Tastatur vornehmen zu können:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Select Case KeyCode
    Case vbKeyEscape
      ' Beenden
      Unload Me
 
    Case vbKeyRight
      ' Nächstes Bild
      tmrNext.Enabled = False
      NextPic
      tmrNext.Enabled = True
 
    Case vbKeyLeft
      ' Vorheriges Bild
      tmrNext.Enabled = False
      PrevPic
      tmrNext.Enabled = True
 
    Case vbKeyR
      ' Zufällige Wiedergabe ein/aus
      ChooseMode = CHOOSE_RANDOM
      tbrMain.Buttons("random").Value = tbrPressed
 
    Case vbKeyP, vbKeySpace
      ' Start-/Stop-Taste
      If State = ST_PAUSED Then
        tbrMain.Buttons("play").Value = tbrPressed
        State = ST_PLAYING
      Else
        tbrMain.Buttons("pause").Value = tbrPressed
        State = ST_PAUSED
      End If
 
    Case vbKeyO
      ' Ordnerauswahl
      If Shift = vbCtrlMask Then
        tbrMain.Buttons("pause").Value = tbrPressed
        State = ST_PAUSED
        Browse
      End If
  End Select
End Sub

Fehlt jetzt nur noch das autom. Weiterschalten zum nächsten Bild:

' Timer-Prozedur, für Auswahl des nächsten Bildes
Private Sub tmrNext_Timer()
  If tbrMain.Visible Then
    tbrMain.Visible = False
    Me.MousePointer = 99
  End If
  If State = ST_PLAYING Then
    NextPic
  End If
End Sub

Erweiterungen des DiaShow-Projekts

Natürlich ist die DiaShow hier noch nicht fertig. Sie kann beliebig verändert und verbessert werden. So könnte man z.B. noch die Unterordner des ausgewählten Ordnersmit einbeziehen. Auch die Definition des Timer-Intervalls und andere Kleinigkeiten könnten dem Benutzer in einem Art "Einstellungs-Fenster" zugänglich gemacht werden.

Eine gute Erweiterung für das Programm ist die Integration in den Windows-Explorer. Unter dem Schlüssel "HKEY_CLASSES_ROOT\Folder\shell" muss nur ein neuer Schlüssel namens "Diashow starten" eingefügt werden. Darunter der Schlüssel "command". Der Standardwert muss den Pfad des Programms und dahinter "Diashow.exe" enthalten, anschließend "%1". So ergäbe sich bei der Installation ins Verzeichnis "Programme\DiaShow" folgender Wert: C:\Programme\DiaShow\DiaShow.exe %1

Dies könnte man auch autom. vom Programm erledigen lassen.

Siehe hierzu:
 Eintrag ins Kontextmenü des Explorers
 Eintrag im Kontextmenü des Explorers entfernen

Dieser Workshop wurde bereits 17.426 mal aufgerufen.

Über diesen Workshop im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Workshop, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Workshops 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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 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