Problem... :(

Sliver

Erfahrenes Mitglied
Grüße,

kann mir jemand bei dem folgenden vielleicht helfen und mir sagen was ich flasch gemacht hab bzw. was ich besser machen könnte?

Also das ist eine eigene Form und soll als Auswahlfenster dienen. Also es soll ein Bild wählen das dann bei Form1 oder bei Form2 angezeigt wird. Das kommt drauf an welche der Form auf Show ist.


Danke im Vorraus...


Code:
Private Sub Command1_Click()
    Me.Hide
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
   Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
    SelectedFile = File1.Path & "\" & File1.FileName
    If Form1.Show Then
    Form1.Image1.Picture = LoadPicture(SelectedPicture)
    End If
    If Form2.Show Then
    Form2.Image1.Picture = LoadPicture(SelectedPicture)
    End If
End Sub


Sliver
 

Dario Linsky

Erfahrenes Mitglied
geht viel kürzer ;)
Code:
Private Sub File1_Click()
    SelectedFile = File1.Path & "\" & File1.FileName
    With Screen.ActiveForm
        If .Name = "Form1" Or .Name = "Form2" Then
            .Image1.Picture = LoadPicture(SelectedPicture)
        End If
    End With
End Sub
 

Sliver

Erfahrenes Mitglied
Hm nun ein Fehler wird nicht mehr angezeigt abet dafür auch kein Bild in Form1 oder Form2. :(
 

Sliver

Erfahrenes Mitglied
Hm, soweit bin ich noch garnet (im Buch)... :)


Kannst du mir das kurz erklären? Also wie der funktioniert und was ich machen muss.
 

Dario Linsky

Erfahrenes Mitglied
ganz einfach. du nimmst dir eine bestimmte zeile im code, und klickst in der höhe der zeile auf den grauen rand links (siehe anhang).

wenn das programm läuft, wird es an der stelle unterbrochen, und du kannst mit f8 jede zeile einzeln abarbeiten lassen. und solange, wie das programm nicht weiterläuft, kannst du die werte von variablen prüfen, indem du die maus über den variablennamen hälst.
 

Anhänge

  • debug.gif
    debug.gif
    1,4 KB · Aufrufe: 92

Sliver

Erfahrenes Mitglied
Also wenn ich das jetzt richtig verstanden habe wird das ausgewählte Bild nicht erkannt... denn sobald ich es auswähle stoppt das Programm und ich gehe über die Variablen und bei "(SelectedPicture)" steht ein der Info "SelectedPicture = Leer"


*edit*
ich sehe auch gerade das bei "If .Name = "Form1" Or .Name = "Form2" Then" die ".Name" beide als Form3 angesprochen werden.
 
Zuletzt bearbeitet:

Dario Linsky

Erfahrenes Mitglied
Screen.ActiveForm liefert dir immer das formular, was gerade im vordergrund ist bzw. am weitesten vorne liegt. wenn form3 vorne liegt, zeigt Screen.ActiveForm auf Form3.
ich dachte, dass du nur form1 und form2 hättest, weil das dann wirklich absolut sicher ist.

wenn SelectedPicture leer ist, kann das bild auch nicht geladen werden. du musst erstmal irgendwo einen dateinamen in die variable kopieren.
 

Sliver

Erfahrenes Mitglied
Das mit dem Screen.ActiveForm versteh ich aber selber weis ich nicht wie ich dsa lösen soll. :(

Und das mit dem Bild versteh ich nicht.
Es soll ja so sein das man immer andere Dateien auswählt werden. Also kannst ich nichts fets setzen welche Dateien genau geöffnet werden.
 

Dario Linsky

Erfahrenes Mitglied
Code:
Option Explicit

Private SelectedFilename As String

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
SelectedFilename = File1.Path & File1.FileName
If Dir(SelectedFilename) <> "" Then
    Set Image1.Picture = LoadPicture(SelectedFilename)
End If
End Sub

und noch ein kleines beispielprojekt:
 

Anhänge

  • image.zip
    1,2 KB · Aufrufe: 19