Elektronischer Zettelkasten in Visual Basic 2008 Express Edition
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Anfanger_40.
-
-
-
-
Hallo Picoflop,
danke für den Hinweis.
Ich habe VB2008 schon vor meiner Zeit hier im Forum auf meinem PC und mich dennoch aus den von mir genannten Gründen für VB 5 entschieden. Diese Entscheidung war aus heutiger Sicht falsch.
Wenn mich später mal wieder Einer fragen sollte, warum ich VB2008 gewählt habe, hier vorsorglich die Gründe:
- Ich gehe davon aus, daß im Forum der Anteil an Usern am Größten ist, die mir bei VB2008 helfen können
- Literatur gibt es ebenfalls in ausreichender Menge, und das sogar kostenlos!
- Die Ursache (VB5) für gelegentliche Meckerei ist beseitigt
Die Schleife in VB5 hätte ich aber gern noch zu Ende gebracht, weil es doch sein könnte, daß sich jemand dafür interessiert.
Gruß vom Peter -
Anfanger_40 schrieb:
weil es doch sein könnte, daß sich jemand dafür interessiert.
Nicht wirklich
Für nen Anfänger ist jedes VB.Net ab (inkl.) 2005 geeignet ... auch wenn irgendwann der Punkt kommt, wo die "coolen" Sachen natürlich VB2010 und das Framework 4.0 erfordern (insb. im Bereich Parallel-Computing und jetzt neuerdings Async/Await) -
ErfinderDesRades schrieb:
Das vernünftigste wird sein, dieses Buch Lesen
ErfinderDesRades:"Hier statemente ich mal meine Meinung, daß Einsteiger am besten mit einem guten Buch einsteigen. Ansonsten könnten sie geneigt sein, sich durch viele Fragen in Foren ein Halbwissen zusammenzustoppeln. Das ist auf kurze Sicht befriedigender, weil es das aktuelle Problem evtl. schnell löst. ...
Microsoft Visual Basic 2005 - Das Entwicklerbuch (<- click it!)
Scheint mir ein hervorragendes Buch.
Ich hab nicht alle 1063 Seiten gelesen, tatsächlich nur die 13 Seiten Inhaltsverzeichnis durchgesehen, und was mich interessierte, nachgeguckt. Das Nachgucken war aber in jedem einzelnen Fall erfreulich."
Der Verfasser schreibt (auszugsweise):Im Gegensatz zum Vorgänger dieses Buches (Anfanger_40: Entwicklerbuch 2005) sind die Anforderungen die dieses Buch (2008) an die Leser stellt, viel geringer geworden und setzt ein paar Level tiefer an. Dennoch wird dieses Buch eher nicht in der Lage zu sein, ein Einsteigerbuch zu ersetzen. Falls Sie sich allerdings noch nie in ihrem Leben mit dem Thema Programmierung auseinandergesetzt haben, so könnte die vorherige Lektüre eines Einsteigerbuchs unter Umständen von Vorteil oder sogar notwendig sein.
Anfanger_40:
Nachdem ich nun also auf Eure Empfehlung hin den 5-Pfünder schon im Schrank habe, der für "Profis" sicher ein excellentes Werk ist, erlaube ich mir hier im Forum weiterhin dämliche Fragen zu stellen, um daduch den Vorteil zu genießen, die vorherige Lektüre eines Einsteigerbuches unter Umständen eventuell sogar unnötig zu machen.:)
Gruß vom Peter -
Anfanger_40 schrieb:
der für "Profis"
sicherlich ein Einstiegspunkt aber garantiert nicht ausreichend ist!
Meine Frau (bzw die IT Abteilung in der sie arbeitet) bestellt regelmäßig Bücher zu Einzelthemen. Die kommen dann selbst schnell mal auf 1.000 Seiten. Das Net Framework ist halt nicht GROSS, sondern GROOOOOOSSSSSSSS.
Und? Wie weit ist dein Image-Rotator? -
Anfanger_40 schrieb:
Nachdem ich nun also auf Eure Empfehlung hin den 5-Pfünder schon im Schrank habe,
wassn fürn 5Pfünder? Was ich immer empfehle issn Pdf-Download für umsonst. -
picoflop schrieb:
Und? Wie weit ist dein Image-Rotator?
Der Image-Rotator (Schleife) ist mit Hilfe von Neptun in VB5.0 fertig.
Nun bräuchte ich halt wieder einen schlauen User, der den Code auf VB2008 umschreibt und mir das Drumherum erklärt.
Hier der VB5.0-Code
VB.NET-Quellcode
- Private Bilder As Integer
- Private Sub Form_Activate()
- Bilder = 4 'Zahl der Bilder
- Me.WindowState = vbMaximized
- 'Bilder laden
- Set Image1(0).Picture = LoadPicture("19.jpg")
- Set Image1(1).Picture = LoadPicture("06.jpg")
- Set Image1(2).Picture = LoadPicture("09.jpg")
- Set Image1(3).Picture = LoadPicture("02.jpg")
- Call Image1_Click(-1) 'Erstes Bild anzeigen
- End Sub
- Private Sub Image1_Click(Index As Integer)
- Dim NewIdx As Integer
- NewIdx = (Index + 1) Mod Bilder 'Index des nächsten Image-Controls
- Image1(NewIdx).ZOrder vbBringToFront
- Image1(NewIdx).Stretch = True
- Image1(NewIdx).Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
- End Sub
Vielen Dank im Voraus vom Peter -
Auf jeden Fall brauchst du nicht X Pictureboxen um X Bilder anzuzeigen ... (das gilt übrigens im Prinzip auch schon für deinen VB5 Code!)
Da jederzeit genau EIN Bild zu sehen ist, braucht man - der Logik folgend - offensichtlich genau EINE Picturebox.
In VB.Net sähe das ganze ZUM BEISPIEL so aus:
VB.NET-Quellcode
- Option Strict On
- Public Class Form1
- Private PicPath As String = "E:\demobilder"
- Private PictureList As New List(Of String)
- Private index As Integer = 0
- Private pb As New PictureBox
- Private Sub Form1_Activated(sender As Object, e As System.EventArgs) Handles Me.Activated
- ' Alle Dateinamen aus dem Verzeichnis auslesen ... sollten wenn möglich BILDER sein!
- If pb.Image Is Nothing Then
- PictureList.AddRange(My.Computer.FileSystem.GetFiles(PicPath).ToArray)
- LoadImage()
- End If
- End Sub
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- ' Picturebox setzen und EventHandler installieren
- Me.Controls.Add(pb)
- pb.Dock = DockStyle.Fill
- pb.SizeMode = PictureBoxSizeMode.StretchImage
- AddHandler pb.Click, AddressOf MyClickHandler
- End Sub
- Private Sub LoadImage()
- pb.Image = Image.FromStream(
- New IO.MemoryStream(
- My.Computer.FileSystem.ReadAllBytes(
- PictureList.Item(index Mod PictureList.Count))))
- End Sub
- Private Sub MyClickHandler(sender As Object, e As System.EventArgs)
- index += 1
- LoadImage()
- End Sub
- End Class
Das einzige was man braucht, ist eine leere Form, denn die EINZIGE Picturebox wird zur Laufzeit angelegt - kann man natürlich auch im Designer machen, aber hier gehts ja um ein BEISPIEL. Und man braucht einen Ordner mit Bildern
EDIT: Sorry, Code viel zu lang Habs nochmal gekürztDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „picoflop“ ()
-
Hallo Picoflop,
ich spiele mich schon einige Zeit mit deinem Code rum, bringe das aber nichts zuwege.
Nun die zwei grundsätzliche Fragen:
1. Muß das bei mir überhaupt laufen? Sind bei VB.NET etwa einige Befehle anders als bei VB2008?
2. Wenn es bei mir auch funktionieren müsste, dann die Frage: Hast du bei dir getestet, ob es läuft.
Gruß vom Peter -
Tut doch.
Nur in der 2. Runde gibts Fehler, weil die FileStreams nicht richtig disposed werden. Ich habs mal so gemacht:VB.NET-Quellcode
- Public Class Form1
- Private PicPath As String = "C:\Programming\Ressources\TestPictures"
- Private PictureList As New List(Of String)
- Private index As Integer = 0
- WithEvents pb As New PictureBox
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
- Me.Controls.Add(pb)
- pb.Dock = DockStyle.Fill
- pb.SizeMode = PictureBoxSizeMode.StretchImage
- PictureList.AddRange(My.Computer.FileSystem.GetFiles(PicPath).ToArray)
- LoadNextImage()
- End Sub
- Private Sub LoadNextImage()
- pb.ImageLocation = PictureList(index)
- index = (index + 1) Mod PictureList.Count
- End Sub
- Private Sub pb_Click(ByVal sender As Object, ByVal e As EventArgs) Handles pb.Click
- LoadNextImage()
- End Sub
- End Class
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
ErfinderDesRades schrieb:
Nur in der 2. Runde gibts Fehler,
Nein. Zumindest nicht bei mir. 4 Bilder im Verzeichnis, die beliebig of durchklickt werden können.
ReadAllBytes liefert ein Array als Kopie und mW bleibt dabei das Handle NICHT geöffnet.
-> Was passiert, wenn du eine Datei löscht, während sie angezeigt ist?
Mit ReadAllBytes geht das (Fehler natürlich wenn wieder per Filename geöffnet werden soll)
msdn.microsoft.com/de-de/libra…io.file.readallbytes.aspx
öffnet diese Methode die Datei, liest den Inhalt der Datei in ein Bytearray ein und schließt die Datei dann.
@A40:
VB Net ist der "Oberbegriff" (VB basierend auf dem .Net Framework) - im Gegensatz zu "VB classic" (VB6 und älter)
Wenn du einen "passenden" Ordner wählst sollte der Code out-of-the-box lauffähig sein. -
Doch - gibt Fehler, aber wg was anneres.
In meinem Directory befindet sich auch eine versteckte Datei "Thumbs.db", bei der wohl Image.FromStream() scheitert, während Picturebox.ImageLocation großzügig drüber hinwegsieht.
Man muß also beim Erstellen der PicList solche Gemeinheiten aussiebenVB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- Private PicPath As New DirectoryInfo("C:\Programming\Ressources\TestPictures")
- Private PictureList As List(Of String)
- Private index As Integer = 0
- WithEvents pb As New PictureBox
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
- Me.Controls.Add(pb)
- pb.Dock = DockStyle.Fill
- pb.SizeMode = PictureBoxSizeMode.StretchImage
- Dim files = From fi In PicPath.GetFiles _
- Where 0 = (fi.Attributes And FileAttributes.Hidden) Select fi.FullName
- PictureList = files.ToList
- LoadNextImage()
- End Sub
- Private Sub LoadNextImage()
- pb.ImageLocation = PictureList(index)
- index = (index + 1) Mod PictureList.Count
- End Sub
- Private Sub pb_Click(ByVal sender As Object, ByVal e As EventArgs) Handles pb.Click
- LoadNextImage()
- End Sub
- End Class
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
ErfinderDesRades schrieb:
Man muß also beim Erstellen der PicList solche Gemeinheiten aussieben
Es geht hier um ein EINFACHES Beispiel. Das noch jede Menge Fehlerabfangcode fehlt, dürfte klar sein. Es geht ja erstmal nur darum, darzustellen, wie man GRUNDSÄTZLICH so etwas mit VB verwirklicht. Denn ansonsten würde auch noch fehlen, zb auf "defekte" JPEG zu reagieren etc etc etc -
-
-
Anfanger_40 schrieb:
deinen Code habe ich in ein Projekt kopiert
Das geht nicht, weil ich ein spezielles Feature von VB 2010 nutze: Implizite Zeilenfortsetzung.
In VB classic bis VB 2008 muss man schreiben:
text = _
"hallo"
(Mit Unterstrich damit VB merkt, dass es "weiter" geht)
Ab 2010 kann man den Unterstrich an bestimmten (den meisten) Stellen weglassen. Das vereinfacht die Arbeit und erhöht die Lesbarkeit!
Du musst also einfach nur mit "ENTF" die umgebrochenen Zeilen wieder zusammenfügen. -
picoflop schrieb:
In VB classic bis VB 2008 muss man schreiben:
text = _
"hallo"
(Mit Unterstrich damit VB merkt, dass es "weiter" geht)
Ab 2010 kann man den Unterstrich an bestimmten (den meisten) Stellen weglassen. Das vereinfacht die Arbeit und erhöht die Lesbarkeit!
Du musst also einfach nur mit "ENTF" die umgebrochenen Zeilen wieder zusammenfügen.
Wo soll ich text = _ hinschreiben, da ich keinen Zeilenumbruch sehe.
Ich habe die Zeilen in der Anlage numeriert. Wo ist ein Umbruch?
Das ist aber schwer Gruß vom Peter -
Anfanger_40 schrieb:
Das ist aber schwer
Dir fällt nicht auf, dass die Einrückungen irgendwie "merkwürdig" aussehen?
wird zu
-
Tags
-
Ähnliche Themen
-
Visual Studio 2008 Express Edition Downloadlink?
MwieMarin - - Off-Topic
-
2 Benutzer haben hier geschrieben
- Gast (20)
- ErfinderDesRades (5)