[ gaga_mn @ 13.11.2006. 12:01 ] @
Napravila sam program koji služi za testiranje učenika.
Postavila sam list box sa pitanjima i opciona dugmad sa odgovorima. Ukoliko je pitanje tačno u labeli ispod piše «tačno je» u suprotnom «nije tačno».
Napraviću textualno polje gde će za tačan odgovor da piše 5 a za netačan 0.
Kako da napravim da mi sumira rezultat kako bi dobila score tj. da li je učenik položio test ???
Dragana
[ LudoA @ 13.11.2006. 13:14 ] @
Pretpostavimo je 15 i vise bodova potrebno za prolaz ucenika, onda bi to trebalo ovako izgledati:
Code:

If Text1.Text >= 15 then 
   MsgBox "Ucenik je polozio"
Else
   MsgBox "Ucenik nije polozio"
End If


Jeli na to mislis?

[Ovu poruku je menjao LudoA dana 13.11.2006. u 14:24 GMT+1]
[ gaga_mn @ 13.11.2006. 13:17 ] @
to mi je jasno, nego kako da sumiram sve tačne udgovore??
[ LudoA @ 13.11.2006. 13:22 ] @
Evo jedan banalan primjer:
Code:

Private Sub Command1_Click()
If varOdgovor = True then
     Text1.Text = Text1.Text + 5  'ako je tacan zbroji
Else
     Text1.Text = Text1.Text - 5  ' ako je netacan oduzmi
End If
End Sub
[ goranvuc @ 13.11.2006. 13:28 ] @
Citat:
LudoA:
Code:

...
Text1.Text = Text1.Text + 5  'ako je tacan zbroji
...


Na ovo gore se uvek najezim, ali sta cemo kada VB to dozvoljava.

Ako neces da ucis pogresno:
Code:

Private Sub Command1_Click()
If varOdgovor Then
     Text1.Text = CStr(CInt(Text1.Text) + 5)  'ako je tacan zbroji
Else
     Text1.Text = CStr(CInt(Text1.Text) - 5)  ' ako je netacan oduzmi
End If
End Sub
[ LudoA @ 13.11.2006. 13:31 ] @
Citat:
LudoA: Evo jedan banalan primjer:


:D :D :D
[ goranvuc @ 13.11.2006. 13:32 ] @
OK, ako je banalan, sorry.
[ gaga_mn @ 13.11.2006. 13:34 ] @
pa može da mi poslužiali .


Ne znam u kom trenutku i na koji događaj da napravim ovo zbrajanje.
Prvo ispitujem da li je tačan 1. odgovor, pa ako je tačan onda znači da to pitanje vredi 5 bodova. Ne znam gde čuvam taj podatak dok idem na drugo pitanje.
Napravila sam selec case kod pitanja.

case 1. pitanje , ponude mi se odgovarajući odgovori u tri opciona dugmeta. Ukoliko kliknem na ono za koje sam u kodu odredila da je tačno u labelu ispod se ispiše tačno i u tom trenutku treba negde da se sačuva tih 5 poena
case 2. pitanje...


i kad sve ispitam da mi se prikaže koliko bodova učenik ima i tek onda da mi ispiše da je položio ili ne...

Ne znam da li sam objasnila kako treba... ???
[ goranvuc @ 13.11.2006. 13:36 ] @
Citat:
gaga_mn:Ne znam da li sam objasnila kako treba... ???

Nisi.

Uploaduj ovde screenshot od ekrana za pitanja, uz ovo sto si vec pitala bi trebalo da objasni kako si to zamislila.

Ako ti nije problem, stavi i ceo projekt, siguran sam da ti niko nece ukrasti.
[ gaga_mn @ 13.11.2006. 13:38 ] @
kuci mi je na racunaru a ja sam na poslu, videcu sutra ako do tad ne rešim pa ću da zakačim.
[ gaga_mn @ 13.11.2006. 13:51 ] @
pošto ovde nemam vb evo skicirala sam u formi accessa kako hocu da izgleda. Sve sam odradila samo mi fali zbrajanje svih poena po svim pitanjima.....
[ Eurora3D Team @ 13.11.2006. 13:56 ] @
Zdravo
Predpostavljam da je program u VB 6.0 posto je u ovom forumu.
Vas problem je ocigledno kako da znate kad je neko odgovorio na sva pitanja
Trebalo bi da u On_Cliclk eventu ListBox-a pratite evente izabiranja pitanja.
Kada je odgovoreno na sva pitanja rezultat ispisite u drugoj formi.
Drugi pristup je da pratite pritiskanje dugmadi sa odgovorima
Primer
Kod u glavnoj formi
'*****************************************************************
Public Odgovoreno as Integer
Public Poeni as Integer

Private Sub Form_Load
Odgovoreno = 0
Poeni =0
End Sub

Botton1_Click 'odgovor 1
If List1.Text="" Then Exit Sub ' ako nije selektovano pitanje
If List1.Text ="Pitanje za ovaj odgovor ?" then Poeni = Poeni + 5 ' ako je odgovor tacan
Button1.Enabled = False ' Ovo dugme vise nije aktivno ili Button1.Visibile = False
If Not List1.ListIndex = -1 Then List1.RemoveItem (List1.ListIndex) ' brisemo i pitanje
Odgovoreno = Odgovoreno +1 '
If Odgovoreno = BrojOdgovora Then Gotovo ' ako je ovo posledni odgovor ' Broj Odgovora zamenite sa pravim brojem
End Sub

'Ponovite gornju subrutinu za svako pitanje

Private Sub Gotovo()
Load Form2 ' druga forma za rezultate
Form2.Label1.Text = Poeni ' sa labelom za poene
Form2.Show
Unload Me
End Sub
'****************************************************************
Test programi se uglavnom prave tako da za svako pitanje postoji jedan ceo prozor (a ne ovako)
Pozdrav
Nebojsa
[ goranvuc @ 13.11.2006. 13:56 ] @
OK, sto se tice koncepta, o tome bi mogli pricati.

Resenje ti je dao @LudoA jos u prethodnom odgovoru; samo povecavas ukupnu vrednost za 5 u slucaju tacnog odgovora (ako je tekstboks za ukupno Text1). Za kompletno uradjen kod treba ili da postavis ukupan kod sa forme, ili da uploadujes projekt.
[ gaga_mn @ 13.11.2006. 14:03 ] @
hvala svima na predlozima kod kuće ću da pokušavam pa do sutra ....
cao
[ gaga_mn @ 14.11.2006. 11:19 ] @
postavila sam textualno polje txtbodovi i txtUkupan rezultat

pa je txtUkupanRezultat=txtUkupanRezultat+txtBodovi

problem je sto se bodovi ne sabiraju nego nižu jedan za drugim ???!!!

[Ovu poruku je menjao gaga_mn dana 14.11.2006. u 12:37 GMT+1]
[ Eurora3D Team @ 14.11.2006. 11:38 ] @
Tekst box sadrzaj je u obliku teksta (stringa) i ako napisete
txtUkupanRezultat+txtBodovi efekat je isti kao Ja + sam =Ja sam
Trebate da sadrzaj pretvorite u broj
Primer
txtUkupanRezultat.Text = CInt (txtUkupanRezultat.Text) + CInt (txtBodovi.Text)
Pozdrav
[ X-Cite @ 14.11.2006. 11:40 ] @
Code:
txtUkupanRezultat.Text = Val(txtUkupanRezultat.Text) + Val(txtBodovi.Text)
[ goranvuc @ 14.11.2006. 11:43 ] @
;)

Eto, a lepo sam ti rekao u jednom od gornjih topika da ne ucis pogresno i pokazao kako treba, nisi nista naucila, a predajes deci ccccc.

Naravno, salim se.
[ gaga_mn @ 14.11.2006. 11:51 ] @
evo prilažem vbp
[ goranvuc @ 14.11.2006. 11:59 ] @
Sto se tice koda i koncepta, imalo bi se tu svasta ispravljati i menjati, ali sam se fokusirao na tvoj problem. Evo ti ispravljen projekat, ako nisam i ja negde u zurbi pogresio.

Nadam se da je bio dovoljno brz odgovor.
[ gaga_mn @ 14.11.2006. 12:05 ] @
hvala puno

jel možeš da mi objasniš ovo sta radi cstr i val ???

txtRezultat.Text = CStr(Val(txtRezultat.Text) + Val(txtBodovi.Text))
[ goranvuc @ 14.11.2006. 12:11 ] @
U pitanju su konverzije tipova, ukratko receno.

Na ovaj nacin se sprecava konkatenacija stringova, jer je u VB-u znak za povezivanje stringova i "+" i "&", a da bi bilo nedvosmisleno, najbolje je da koristis "&", a ja namerno nisam menjao da bi uocila problem. Zato su ti se brojevi spajali, umesto sabirali. Ja sam na ovaj nacin naterao VB da prvo sabere (a ne da spoji brojeve), pa onda dodeli Text svojstvu od Textbox-a.

Naravno da se ti izrazi mogu pisati na veliki broj nacina, ali to je neka druga prica.

Knjigu u sake, ako ces se ovim ozbiljnije baviti i kreni od osnovnih tipova, pa onda predji na "crtanje" i dogadjaje.
[ gaga_mn @ 14.11.2006. 12:41 ] @
A ako sam stavila da mi jedata format Number?? Jel on to konta??

>
[ goranvuc @ 14.11.2006. 12:45 ] @
"On" to ne konta

DataFormat sluzi za formatiranje vrednosti kada je Textbox "povezan" za polje iz rekordset-a i sl.
Textbox ima svojstvo Text koje je osnovnog tipa String "uvek i za svagda".
[ gaga_mn @ 14.11.2006. 12:49 ] @
ok, hvala puno na pomoći....

[ Eurora3D Team @ 14.11.2006. 13:16 ] @
Popravili smo vas program
Mozete da skinete zip sa http://www.extramedia.co.yu/eurora3d/files/ReIspitEM.zip
Pozdrav
Nebojsa
[ gaga_mn @ 15.11.2006. 09:06 ] @
postavila sam na kraju uslov
If txtRezultat.Text >15 Then
MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If

i ni u kom slučaju neće da prihvati da je učenik položio ??

Jel isto treba da primenim pretvaranja stringa u number i kojim načinom da primenim to ??
[ goranvuc @ 15.11.2006. 09:16 ] @
Sama si sebi odgovorila, ne znam zasto nisi probala?
Code:

If CInt(txtRezultat.Text) >= 15 Then
    MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
    MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If
[ gaga_mn @ 15.11.2006. 09:20 ] @
pa probala al opet ne prihvata
[ goranvuc @ 15.11.2006. 09:23 ] @
Ko, sta, gde ne prihvata? Da li si videla i ono "=" sto sam dodao u uslov?
[ Eurora3D Team @ 15.11.2006. 09:24 ] @
Zdravo
U vasem programu ima samo 3 pitanja i rezultat nikad nije veci 0d 15
Stavite If CInt(txtRezultat.Text) = 15 Then
Pozdrav
[ gaga_mn @ 15.11.2006. 09:31 ] @
pa iako stavim >=10 opet neće da prihvati, a i ako stavim da je = 15 i u tom slučaju ne radi...
[ goranvuc @ 15.11.2006. 09:33 ] @
Kao sto sam rekao:
Citat:
goranvuc: Ko, sta, gde ne prihvata?

Stavi kod.
[ gaga_mn @ 15.11.2006. 09:36 ] @
pa pobogu,
naravno da sam stavila.
Kako bi znala da ne radi ako nisam stavila kod ??!!
[ goranvuc @ 15.11.2006. 09:42 ] @
Citat:
gaga_mn: pa pobogu,
naravno da sam stavila.
Kako bi znala da ne radi ako nisam stavila kod ??!!

Pa mislio sam da ga ovde stavis ;)

Eh, sta radi panika.
[ gaga_mn @ 15.11.2006. 09:53 ] @
:)) nisam u panici

Case 3
Unload Me
If CInt(txtRezultat.Text) >= 10 Then
MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If
[ goranvuc @ 15.11.2006. 09:55 ] @
A da taj "Unload Me" stavis posle?
Code:

Case 3

   If CInt(txtRezultat.Text) >= 10 Then
       MsgBox ("UČENIK JE POLOŽIO ISPIT")
   Else
       MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
   End If

   Unload Me

Da li uopste ulazi u Case 3?
[ gaga_mn @ 15.11.2006. 10:04 ] @
> e pa to je
tnx :))
[ goranvuc @ 15.11.2006. 10:05 ] @
Da li tvoji ucenici imaju pojma koliko se ti zbog njih mucis?
[ gaga_mn @ 15.11.2006. 10:09 ] @
:))
[ mladenovicz @ 15.11.2006. 15:44 ] @
Skoro svi problemi ovde imaju isti uzrok. U principu, UVEK bi trebalo odvojiti logiku aplikacije od UIja. U ovom konkretnom slucaju to znaci da bi trebalo uvesti promenljivu BrojPoena tipa Integer i svako dodavanje poena, poredjenje i sta god da se radi sa poenima raditi sa tom promenljivom. Text box treba koristiti SAMO za prikaz na ekranu. Sta ako se dobije zahtev da se ovaj text box zameni labelom recimo? Neki ce da kazu da ce find/replace da radi posao, ali to je losa praksa.
[ goranvuc @ 15.11.2006. 15:53 ] @
Da citiram sebe:
Citat:

OK, sto se tice koncepta, o tome bi mogli pricati.


@mladenovicz, potpuno se slazem sa tvojim komentarom. Mislim da ova tema moze da bude vrlo edukativan primer za pocetnike u VB-u, pa je bitno i da se na kraju nesto "rezimira".
[ gaga_mn @ 16.11.2006. 09:41 ] @
hvala na savetu, primenila sam i to

pozdrav
Dragana
>