• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Kriptosgeek

Duvida sobre o Clique! [Urgente]

8 mensagens neste tópico

olá!

o meu problema é o seguinte!

eu fiz 1 questionario em vb por clique!

mas contece que ao clicar numa resposta certa, o clique fica acumulado e na proxima pergunta, mas se for errado não acumula!

veja o codigo!

Private Sub palpite_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If currect_question > 0 And currect_question < 15 Then

If palpite(Index).Caption = pergunta(currect_question, 4) Then

acertadas(currect_question) = True
palpite(Index).ForeColor = vbGreen
MsgBox "Certo!", vbInformation, "O exame do Bart"
palpite(Index).ForeColor = vbWhite
currect_question = currect_question + 1
next_question
ultima = True
End If




End If
If palpite(Index).Caption <> pergunta(currect_question, 4) Then
acertadas(currect_question) = False
palpite(Index).ForeColor = vbRed

'pesquisa pelo palpite certo
For i = 1 To 3
If palpite(i).Caption = pergunta(currect_question, 4) Then
palpite(i).ForeColor = vbGreen
a = i
End If
Next

MsgBox "Errado!", vbInformation, "O exame do Bart"
palpite(a).ForeColor = vbWhite
palpite(Index).ForeColor = vbWhite
currect_question = currect_question + 1
next_question

End If

End If
End Sub

Onde está o erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpa mas nao percebi bem... ke keres que aconteca?

que o clique fique acumulado ou nao?

especifica melhor que talvez eu te possa ajudar

fika bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que é eu quero é que o clique não fique acumulado!!

em pascal eu lembro que quando introu«duzia-mos uma string, se logo a seguir tivessemos que introduzir outra, itnhamos que coloar um readkey ou um readln, porque ao dar enter a 2ª string ficava so com o enter!

O mesmo se passar aqui! eu tenho que arranjar uma espcie de reakey para impedir que o clique seja acumulado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

que versao do vb estas a utilisar?

e que objecto usas para clicar?

uma checkbox? um radiobutton?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao o problema e a cor?

na linha:

palpite(a).forecolor=vbwhite

nao devera ser palpite(index)

ve la bem...

e podes meter para a cor do texto voltar a que tu queres...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não pk a variavel a guarda o valor da posição no vector pergunta onde esta a resposta correcta, e apenas usei para não repetir o ciclo for!

O problema não é a cor!

é que eu clico numa resposta correcta, mas depois não sei porque, como a resposta é certa o clique é mantido, mas se for errada ja não! isto é que me esta a intrigar!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eskeçe ja dei com o erro!!  :P

vou postar o código completo

Dim pergunta(1 To 14, 0 To 4) As String
Dim currect_question As Integer
Dim acertadas(1 To 14) As Boolean
Dim activo As Boolean
Dim ultima As Boolean
Dim t As Integer
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub end_of_the_game()
Dim certas As Integer
Text1.Visible = False

palpite(1).Visible = False
palpite(2).Visible = False
palpite(3).Visible = False

' calculo de certas
For i = 1 To 14
If acertadas(i) Then certas = certas + 1
Next
If certas < 7 Then
Image3.Visible = True
Image4.Visible = True
Image5.Visible = True
Image5.Picture = LoadPicture("C:\Documents and Settings\Kriptosgeek\Ambiente de trabalho\Simpsons\Imagens prontas\negativa.gif")
Label2.Visible = True
Label2.Caption = "Respostas certas => " & certas & vbCrLf & "Respostas erradas=> " & (14 - certas)
Image1.Picture = LoadPicture("C:\Documents and Settings\Kriptosgeek\Ambiente de trabalho\Simpsons\Imagens prontas\quadro2.gif")
Sleep (8000)
Form2.Hide
Form1.Show

End If

If certas >= 7 Then

Image4.Visible = True
Image5.Visible = True
Image5.Picture = LoadPicture("C:\Documents and Settings\Kriptosgeek\Ambiente de trabalho\Simpsons\Imagens prontas\positiva.gif")
Image1.Picture = LoadPicture("C:\Documents and Settings\Kriptosgeek\Ambiente de trabalho\Simpsons\Imagens prontas\quadro2.gif")
Label2.Visible = True
Label2.Caption = "Respostas certas => " & certas & vbCrLf & "Respostas erradas=> " & (14 - certas)
Image7.Visible = True
End If
End Sub
Public Sub next_question()
'1 ª jogada
If currect_question = 1 Then
Text1.Text = pergunta(1, 0)
palpite(1) = pergunta(1, 1)
palpite(2) = pergunta(1, 2)
palpite(3) = pergunta(1, 3)
End If

'jogo todo
If currect_question > 1 And currect_question < 15 Then

'Apaga so o Label 1 (Pergunta)
'Image2.Left = Label1.Width + Label1.Left
'Image2.Top = Label1.Top + 100
'Image2.Visible = True

Text1.Text = pergunta(currect_question, 0)
palpite(1) = pergunta(currect_question, 1)
palpite(2) = pergunta(currect_question, 2)
palpite(3) = pergunta(currect_question, 3)

End If

If currect_question > 14 Then end_of_the_game

End Sub
Public Sub atribuip()
'Atribuição das strings no vector pergunta
'pergunta 1
pergunta(1, 0) = "Qual é o sentido da palavra inócuo?"
pergunta(1, 1) = "Inofensivo."
pergunta(1, 2) = "Infeliz."
pergunta(1, 3) = "Incolor."
pergunta(1, 4) = "Inofensivo."
'pergunta 2
pergunta(2, 0) = "Qual das seguintes palavras completaria logicamente a frase ""Não valia a pena _______________ : Já toda a gente tinha compreendido que ele estava a mentir"" ?"
pergunta(2, 1) = "Dirigir."
pergunta(2, 2) = "Despachar."
pergunta(2, 3) = "Dissimular."
pergunta(2, 4) = "Dissimular."
'pergunta 3
pergunta(3, 0) = "Qual das palavras que se seguem  é sinónima de exprobar?"
pergunta(3, 1) = "Explorar"
pergunta(3, 2) = "Censurar"
pergunta(3, 3) = "Conquistar"
pergunta(3, 4) = "Censurar"
'pergunta 4
pergunta(4, 0) = "Qual das palavras é antónima de olvidar"
pergunta(4, 1) = "Lembrar"
pergunta(4, 2) = "Resgatar"
pergunta(4, 3) = "Desprezar"
pergunta(4, 4) = "Lembrar"
'pergunta 5
pergunta(5, 0) = "Qual das seguintes frases está correcta?"
pergunta(5, 1) = "O pai perdoou-o."
pergunta(5, 2) = "O pai perdoou a ele."
pergunta(5, 3) = "O pai perdoou-lhe."
pergunta(5, 4) = "O pai perdoou-lhe."
'pergunta 6
pergunta(6, 0) = "Qual das seguintes frases está correctamente pontuada?"
pergunta(6, 1) = "O senhor António dono da mercearia atende bem os clientes."
pergunta(6, 2) = "O senhor António dono da mercearia, atende bem os clientes."
pergunta(6, 3) = "O senhor António, dono da mercearia, atende bem os clientes."
pergunta(6, 4) = "O senhor António, dono da mercearia, atende bem os clientes."
'pergunta 7
pergunta(7, 0) = "A frase <<Nesta altura há sempre que fazer.>> esta incorrecta porque:"
pergunta(7, 1) = "Tem erros de ortografia."
pergunta(7, 2) = "Tem erros de pontuação."
pergunta(7, 3) = "Tem erros de conjugação verbal."
pergunta(7, 4) = "Tem erros de pontuação."
'pergunta 8
pergunta(8, 0) = "A frase ""Ele estava feliz, porque mantia uma relação conjugal estável." & vbclrf & "está incorrecta, porque:"
pergunta(8, 1) = "O verbo está errado."
pergunta(8, 2) = "Há erros de concordância."
pergunta(8, 3) = "O conector não é o adequado."
pergunta(8, 4) = "O verbo está errado."
'pergunta 9
pergunta(9, 0) = "O prefixo des- significa:"
pergunta(9, 1) = "Ideia semelhante."
pergunta(9, 2) = "Ideia fixa."
pergunta(9, 3) = "Ideia Contrária."
pergunta(9, 4) = "Ideia Contrária."
'pergunta 10
pergunta(10, 0) = "O sufixo -ada significa:"
pergunta(10, 1) = "Abundância."
pergunta(10, 2) = "Escassez."
pergunta(10, 3) = "Mediocridade."
pergunta(10, 4) = "Abundância."
'pergunta 11
pergunta(11, 0) = "Na frase ""Convém fazer-mos os trabalhos de casa rapidamente para que abalemos para casa dos nossos primos ou possa-mos ir ao cinema."", há dois erros. Quais são?"
pergunta(11, 1) = "As formas verbais ""fazer-mos"" e ""possa-mos""."
pergunta(11, 2) = "As formas verbais ""Convém"" e ""fazer-mos""."
pergunta(11, 3) = "As formas verbais ""possa-mos"" e ""abalemos""."
pergunta(11, 4) = "As formas verbais ""fazer-mos"" e ""possa-mos""."
'pergunta 12
pergunta(12, 0) = "Completa a frase seguinte com a forma verbal adequada: ""Eles __________ à biblioteca todos os dias."""
pergunta(12, 1) = "Vêem."
pergunta(12, 2) = "Vêm."
pergunta(12, 3) = "Vem."
pergunta(12, 4) = "Vêm."
'pergunta 13
pergunta(13, 0) = "Na frase ""À muito tempo atrás, pensava.se que Galileu estava errado ao defender o sistema heliocêntrico."", há um erro. Em que palavra?"
pergunta(13, 1) = "À."
pergunta(13, 2) = "Atrás."
pergunta(13, 3) = "Heliocêntrico."
pergunta(13, 4) = "À."
'pergunta 14
pergunta(14, 0) = "A frase ""A Feira do Livro teve uma enorme ___________ por parte dos alunos."" pode ser completada com:"
pergunta(14, 1) = "Aderência."
pergunta(14, 2) = "Adesão."
pergunta(14, 3) = "Qualquer uma das anteriores."
pergunta(14, 4) = "Adesão."
End Sub

Private Sub Form_Load()
comeca_jogo


End Sub

Private Sub Label1_Click()
Form2.Hide
Form1.Show
End Sub

Private Sub palpite_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
'-------------------------------------
If currect_question = 1 Then
acertadas(currect_question) = True
palpite(Index).ForeColor = vbGreen
MsgBox "Certo!", vbInformation, "O exame do Bart"
palpite(Index).ForeColor = vbWhite
currect_question = currect_question + 1
next_question
ultima = True
t = 0
End If

If currect_question > 0 And currect_question < 15 And (ultima = False Or t = 0) Then

If palpite(Index).Caption = pergunta(currect_question, 4) Then

acertadas(currect_question) = True
palpite(Index).ForeColor = vbGreen
MsgBox "Certo!", vbInformation, "O exame do Bart"
palpite(Index).ForeColor = vbWhite
currect_question = currect_question + 1
next_question
ultima = True
t = 0

End If
If palpite(Index).Caption <> pergunta(currect_question, 4) Then
acertadas(currect_question) = False
palpite(Index).ForeColor = vbRed

'pesquisa pelo palpite certo
For i = 1 To 3
If palpite(i).Caption = pergunta(currect_question, 4) Then
palpite(i).ForeColor = vbGreen
a = i
End If
Next

MsgBox "Errado!", vbInformation, "O exame do Bart"
palpite(a).ForeColor = vbWhite
palpite(Index).ForeColor = vbWhite
currect_question = currect_question + 1
next_question

End If
End If
'--------------------------------------
If ultima = True And t = 1 Then
t = 0
ultima = False
End If
End Sub
Public Sub comeca_jogo()
currect_question = 1
atribuip
next_question
t = 0
ultima = False
Image4.Visible = False
Image5.Visible = False
Image7.Visible = False
Image3.Visible = False
palpite(1).Visible = True
palpite(2).Visible = True
palpite(3).Visible = True
Text1.Visible = True
Label2.Visible = False
End Sub
Private Sub Timer1_Timer()
Image2.Left = Image2.Left - 160
a = Text1.Text
If Len(a) > 0 Then Text1.Text = Mid(a, 1, (Len(a) - 1))
End Sub

eu tenho que colocar um Else depois do if, pois no procedimento next_question vão ser atribuidos ao label novas perguntas e o currect_question vai incrementar dai a que so de no clique!

Felizmente foi so uma distração! pois tenho que intregar isto hoje!!!

Mas obrigado!  :D :D :):thumbsup: :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora