mit commandbotton bilder wechseln

Amorphis907

Grünschnabel
juhu ihr guten

ich hab da mal ein kleines problemchen:
ich hab mir mal wieder vb6 installiert um ein kleine einfachen Bildprogramm zu erstellen.
das letzte mal als ich das noch konnte war vor 5jahren. da war ales kein problem, doch jetzt, oje, welch ein graus. ich hab wirklich das meißte vergessen.
das erstellen der menüs, das einfügen der bilder = alles kein problem. aber diese verdammten commandbottons für bild weiter/zurück, das geht bei mir garnicht mehr. ich bekomm das einfach nicht mehr hin.
ich hab im menübalken mehrere events die jeweils 10 bilder enthalten (siehe Anhang).
wenn ich ein event anklicke will ich mit den botton weiter/zurück die bilder dazu anschauen.das sollte für jedes der events so funktionieren.

wie würde die programmierung für in etwa dafür aussehen? ich weiß das es für euch profis ganz einfach ist.

danke für eure mühe im voraus.
 

Anhänge

  • oberfläche.JPG
    oberfläche.JPG
    38,9 KB · Aufrufe: 29
Ist zwar jetzt glaube ich nicht genau das selbe, da mein Code aus VB 2005 Express ist und weiß auch nicht, obs bei dir auch so geht, aber vom Prinzip her würde ich es so machen:

Und zwar einen Timer erstellen und den zur Laufzeit laufen lassen und bei Klick auf die Buttons einen Zähler hoch- /runterzählen lassen.

Code:
    Private Sub weiter_Click()
        If zähler > 0 And zähler < 10 Then
            zähler += 1
        End If
    End Sub


    Private Sub zurück_Click()
        If zähler > 0 And zähler < 10 Then
            zähler -= 1
        End If
    End Sub


    Private Sub Timer1_Tick()
        Select Case zähler
            Case 1
                PictureBox1.Image = My.Resources.Bild1
            Case 2
                PictureBox1.Image = My.Resources.Bild2
            ...
        End Select
    End Sub

So, gib dann Bescheid, obs geklappt hat oder auch, wenn nicht.
Viel Erfolg!
 
danke danke.

ich werde es gleich mal probieren. esist schlimm das man wirklich so viel verlernen kann wenn man sich nich intensiv damit beschäftigt.
 
leider fünktioniert es bei mir nich wirklich. ich gebe zwar den richtigen pfad der bilder ein, dennoch kann ich die bilder mit der steuerung nicht weiterschalten.

trotzdem danke nochmal,




Private Sub weiter_Click()
If zähler > 0 And zähler < 10 Then
zähler = zähler + 1
End If
End Sub


Private Sub zurück_Click()
If zähler > 0 And zähler < 10 Then
zähler = zähler - 1
End If
End Sub
 
Probier das hier mal aus:

Visual Basic:
Dim Zähler As Integer

Private Sub Command1_Click()
   If Zähler = 0 Then Exit Sub
   Zähler = Zähler - 1
   Call Bilderwechsel
End Sub

Private Sub Command2_Click()
   If Zähler = 10 Then Exit Sub
   Zähler = Zähler + 1
   Call Bilderwechsel
End Sub

Private Sub Bilderwechsel()
   Select Case Zähler
      Case 0
         Picture1.Picture = LoadPicture("<Pfad zum Bild>")
      Case 1
         Picture1.Picture = LoadPicture("<Pfad zum Bild>")
      Case 2
         Picture1.Picture = LoadPicture("<Pfad zum Bild>")
   End Select
End Sub

ist ähnlich, dem was Rockstady11 gepostet hat, nur kommt man ohne Timer aus. :)
 
das funktioniert ganz gut. ich glaub ich war schon auf dem richtigen weg. nur was mir noch kopfzerbrechen macht ist das menü oben. wie kann ich das menü mit den entsprechenden bildern auswählen?
ich will das sich die bilder nach dem gewälten anlaß richten und mit den buttons vor/zurück wählen lassen.

für mich als wiedereinsteiger ist das garnich so einfach

hast du ne idee?
 
Man könnte es natürlich so machen:
Visual Basic:
Dim Zähler As Integer, Anlass As Integer     'Der Variablen wird je nach Anlass eine Zahl zugeordnet

Private Sub Command1_Click()
   If Zähler = 0 Then Exit Sub
   Zähler = Zähler - 1
   Call Bilderwechsel
End Sub

Private Sub Command2_Click()
   If Zähler = 10 Then Exit Sub
   Zähler = Zähler + 1
   Call Bilderwechsel
End Sub

Private Sub Bilderwechsel()
   Select Case Zähler
      Case 0
         If Anlass = 1 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         If Anlass = 2 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         If Anlass = 3 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         'usw, je nachdem, wieviele Anlässe es gibt
      Case 1
         If Anlass = 1 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         If Anlass = 2 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         If Anlass = 3 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         'genauso, wie oben
      Case 2
         If Anlass = 1 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         If Anlass = 2 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         If Anlass = 3 Then Picture1.Picture = LoadPicture("<Pfad zum Bild>")
         'hier auch wie oben
   End Select
End Sub

Das ist, meiner Meinung nach, aber keine schöne Lösung.
Ich würde, die Bilder nach einem bestimmten Muster benennen, sodass es viel einfacher wird.
Hier ein Beispiel:
Visual Basic:
Dim Zähler As Integer, Anlass As Integer     'Der Variablen wird je nach Anlass eine Zahl zugeordnet

Private Sub Command1_Click()
   If Zähler = 0 Then Exit Sub
   Zähler = Zähler - 1
   Call Bilderwechsel
End Sub

Private Sub Command2_Click()
   If Zähler = 10 Then Exit Sub
   Zähler = Zähler + 1
   Call Bilderwechsel
End Sub

Private Sub Bilderwechsel()
   Picture1.Picture = LoadPicture(App.Path & "\Anlass" & Anlass & "_" & Zähler & ".jpg")
End Sub

So kommt man mit viel weniger Code aus, das erste Bild des ersten Anlasses müsste aber, bei meinem Beispiel "Anlass1_0.jpg" heißen.
Natürlich kannst du es machen wie du willst. ;)
 
also mit der ersten version komm ich überhaupt nich klar. die zweite sieht da schon ganz gut aus. nur leider ist da ein kleiner fehler den ich nich finde. wenn ich den anlaß wähle (zu jedem gibt es im moment 3 Bilder) und dem commandbutton die bilder anschauen will werden die bilder aller anlässe sofort hintereinander abgespielt.
brauch ich nich einen enabled/disabled oder true/false befehl für die anlässe die ich nicht anschaue?
 

Anhänge

  • code.JPG
    code.JPG
    89,4 KB · Aufrufe: 22
Also du musst, entweder die Variable Anlass als String definieren ( Dim Anlass As String), oder du lässt sie auf Integer, dann dürfen deine Anlässe aber nicht "Nancy", "Marlene" oder "Caro" heißen, sondern 1,2 und 3. So wie du es gemacht hast empfehle ich dir ersteres zu verwenden, also "Dim Anlass As String" und nicht "Dim Anlass As Integer".

Dann als zweites ist mir aufgefallen, dass du bei deinen Abfragen, also If Anlass = Nancy keine Anführungszeichen gesetzt hast. Das ist aber essenziell, da VB sonst denkt, es sei eine Varible, was es nicht ist.

Lass dir das am besten mal durch den Kopf gehen. :)

//Edit: Ach ja, ich würde dir empfehlen, die Pfade der Bilder realtiv anzugeben und nicht absolut. Schau dir da am besten mal diese Funktion an. :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück