Nemoj se ljutiti, ali kod ti je uzasno necitak. Nista nije nazubljeno, nazivi kontrola i promeljivih su uzasni. Pogledaj u MSDNu naming conventions ili nadji na netu Leszinsky convention.
Druga stvar, ne koristis kako treba On Error GoTo. Evo primera iz tvog koda:
Code:
Private Sub Form_Load()
Dim sfile, a As String
plays = "stop"
sloop = "False"
Slider2.Value = 2500
sfile = App.Path + "\" + "default.mpl"
On Error GoTo serr
Open sfile For Input As #1
Do Until EOF(1)
Input #1, a$
List1.AddItem a$
Loop
Close #1
serr:
Close #1
End Sub
Kod tebe ce se
serr labela izvrsiti i ako je bilo greske i ako nije. Ovo bi trebalo da izgleda ovako
Code:
Private Sub Form_Load()
Dim sfile, a As String
plays = "stop"
sloop = "False"
Slider2.Value = 2500
sfile = App.Path + "\" + "default.mpl"
On Error GoTo serr
Open sfile For Input As #1
Do Until EOF(1)
Input #1, a$
List1.AddItem a$
Loop
Close #1
Exit Sub ' nije bilo greske, izadji iz procedure/funkcije
serr:
Close #1
End Sub
Toliko o primedbama. Jos jednom, nemoj se ljutiti zbog ovoga, ovo su dobronamerne sugestije.
Elem, tvoj problem se javlja kad zatvoris aplikaciju (bar kod mene), zato sto setujes Slider1 kontroli Max property na 0 i to je taj Invalid property value. Problem je kod koji se nalazi na Form_Unload
Code:
Private Sub Form_Unload(Cancel As Integer)
Dim sfile As String
Dim i As Long
sfile = App.Path + "\" + "default.mpl"
On Error GoTo error
Open sfile For Output As #1
For i = 0 To 100
List1.ListIndex = i
Write #1, List1.Text
Next i
error:
Close #1
End Sub
Problem je linija List1.ListIndex = i. Kad se ovo izvrsi okida se event List1_Click i izvrsava se taj kod tamo, a tamo setujes Slider.Max1 na nulu, a to je i Min vrednost
Evo jedno quick and dirty resenje. Na pocetku koda za formu dodaj ovo:
Code:
Private m_SavingToFile As Boolean
Form_Unload treba da ti izgleda ovako:
Code:
Private Sub Form_Unload(Cancel As Integer)
Dim sfile As String
Dim i As Long
sfile = App.Path + "\" + "default.mpl"
On Error GoTo error
m_SavingToFile = True
Open sfile For Output As #1
For i = 0 To 100
List1.ListIndex = i
Write #1, List1.Text
Next i
proc_exit:
Close #1
m_SavingToFile = False
Exit Sub
error:
Resume proc_exit
End Sub
Na pocetak List1_Click() dodaj ovu liniju:
Code:
If m_SavingToFile Then Exit Sub
Znaci List1_Click() se nece izvrsavati ako je u toku pisanje u fajl, i nece doci do setovanja Slider1.Max na 0.
Drugi jednostavniji nacin je da ides kroz listbox na sledeci nacin
Code:
For i = 0 To List1.ListCount - 1
Debug.Print List1.List(i)
Next
onda ti se nece okidati Click event