@mikeyww: please find the full script attached
Code: Select all
#Requires AutoHotkey v2.0
counter := 1
mytable := 1
mistakes := 0
AHKV2Gui := Gui("AlwaysOnTop", "My First AHKv2 Gui")
Ahkv2Gui.Add("Text",, "Which multiplication do you want to practice ?")
Ahkv2Gui.Add("Text",, "")
AHKv2Gui.Show()
TableButton := []
Loop 10
{
TableButton.Push(AHKV2Gui.Add("Button", "w40 yp", A_Index))
TableButton[A_Index].OnEvent("Click", TableButton1_Click)
}
AddCtrl := Ahkv2Gui.Add("Text", "x10 y+30 w90 h13 hidden", counter . " times " . mytable " is ?")
AddCtrl.SetFont("s11 bold")
EditCtrl := Ahkv2Gui.AddEdit("vAnswer center Number w40 yp-2 xp+95 hidden")
EditCtrl.SetFont("s11 bold")
AnswerBtn := AHKv2Gui.Add("Button", "default yp hidden" , "Go")
AnswerBtn.OnEvent("Click", ClickAnswer)
AnswerText := AHKV2Gui.Add("Text", "x0 yp+25 w500 center h65 hidden", "OK !")
AnswerText.SetFont("s40 bold")
NoOfMistakes := AHKV2Gui.Add("Text", "y65 x315 h25 w250 hidden", "You made " . mistakes . " mistake")
NoOfMistakes.SetFont("s12 cff008c")
ResetBtn := AHKV2Gui.Add("Button", "x420 y270", "Reset")
ResetBtn.OnEvent("Click", ResetGui)
Ahkv2Gui.OnEvent("Close", Close_Gui)
AHKV2Gui.Show("w500 h300 center")
return
TableButton1_Click(btnObj, *) { ; btnObj is used to get the text from the pressed button
global mytable := btnObj.Text
Loop 10
{
TableButton[A_Index].Enabled := false ; disable all buttons until finished
}
counter := 1
AddCtrl.Text := counter " times " mytable " is: "
AddCtrl.Visible := 1
EditCtrl.Visible := 1
EditCtrl.Focus
AnswerBtn.Visible := 1
return
}
ClickAnswer(*) {
global mistakes
Saved := AHKV2Gui.Submit(0)
if (Saved.Answer = "")
return
if (Saved.Answer = counter * mytable) ; means the answer is correct
{
global counter
if (counter = 10)
{
ResetGui()
return
}
++counter ; used to be counter++ in V1
AddCtrl.Text := counter " times " mytable " is: "
EditCtrl.Text := ""
EditCtrl.Focus
AnswerText.Text := "OK !"
AnswerText.SetFont("cGreen")
AnswerText.visible := 1
Sleep 1000
EditCtrl.Focus
AnswerText.visible := 0
}
else
{
++mistakes
NoOfMistakes.Visible := 1
if (Mistakes = 1)
NoOfMistakes.Text := "You made " . mistakes . " mistake"
else
NoOfMistakes.Text := "You made " . mistakes . " mistake(s)"
AnswerText.Text := "Try again"
AnswerText.SetFont("cRed")
AnswerText.visible := 1
Sleep 1000
AnswerText.visible := 0
EditCtrl.Text := ""
EditCtrl.Focus
AnswerText.visible := 0
}
return
}
ResetGui(*)
{
if MsgBox("Do you want to practice another multiplication ?",, "y/n 4096") = "Yes"
{
Loop 10
TableButton[A_Index].Enabled := true ; enable all buttons
global counter := 1
global mytable := 1
global mistakes := 0
AnswerBtn.visible := 0
AddCtrl.visible := 0
AnswerText.visible := 0
EditCtrl.visible := 0
EditCtrl.Text := ""
NoOfMistakes.visible := 0
return
}
else
Close_Gui ; >>>>> Replacing this with ExitApp works, but I'm wondering why the function call the function does not work ??
return
}
Close_Gui(*)
{
if MsgBox("Are you sure you want to close the GUI?",, "y/n" . " " . "default2 4096") = "No" ; 'default2' makes the No button the default one
return true ; true = 1
}