Computer Science Canada

How to disable buttons after they are pressed

Author:  VR1235 [ Fri Dec 30, 2022 8:14 pm ]
Post subject:  How to disable buttons after they are pressed

What is it you are trying to achieve?
Disabling the buttons after they are pressed

What is the problem you are having?
If I cls or dispose they do not go away

Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)

Turing:


procedure TitleScreen
    setscreen ("graphics:1000;600")
    Pic.ScreenLoad ("maxresdefault.jpg", -1, 0, picCopy)
    var MathTestButton : int := GUI.CreateButton (10, 150, 300, "Math Quiz", Mathquiz)             %opens the math quiz
    var G1TestButton : int := GUI.CreateButton (10, 250, 300, "G1 Practice Test", g1test)             %opens the G1 Test Practice
    var GoogleFeudButton : int := GUI.CreateButton (10, 350, 300, "Google Feud", Mathquiz)         %opens Google Feud
    var TicTacToeButton : int := GUI.CreateButton (10, 450, 300, "Tic-Tac-Toe", Mathquiz)             %opens the Tic-Tac-Toe
    var CodingTriviaButton : int := GUI.CreateButton (10, 550, 300, "Coding Trivia", Mathquiz)             %opens the Coding Trivia
    var quitButton : int := GUI.CreateButton (10, 50, 300, "EXIT", GUI.Quit)             %an EXIT button to terminate this program
    loop
        exit when GUI.ProcessEvent
    end loop
    GUI.Dispose (MathTestButton)
    GUI.Dispose (G1TestButton)
    GUI.Dispose (GoogleFeudButton)
    GUI.Dispose (TicTacToeButton)
    GUI.Dispose (CodingTriviaButton)
    GUI.Dispose (quitButton)
end TitleScreen


Please specify what version of Turing you are using
4.1.1

Author:  TokenHerbz [ Tue Apr 18, 2023 2:35 am ]
Post subject:  RE:How to disable buttons after they are pressed

code:

% The "Buttons.dem" program.
% This demonstrates the Button widget along with the GUI routines
% that use Button widgets. [SetDefault, Enable, Disable, Show, Hide,
% SetPosition, SetPositionAndSize, Refresh, SetLabel, Quit, CreateButton,
% CreateButtonFull, ProcessEvent, Dispose]

import GUI % Must be included in a programs using the GPL

View.Set ("graphics:400;300,noecho,nobuttonbar") % Shrink the window to the minimum size

% The button IDs
var button1, button2 : int
var changeDefaultButton, enableDisableButton, showHideButton : int
var moveButton, resizeButton, refreshButton, changeText1Button : int
var changeText2Button, quitButton : int

% Variables used by the button routines
var newDefault := 1 % Which button to make default
var enable := false % Whether to enable or disable the button
var hide := true % Whether to hide or show the button
var right := true % Whether to move the button right or left
var big := true % Whether ot make the button big or small
% The array of names for button 1
const button1Names : array 0 .. 4 of string := init ("Button 1", "a",
    "abcdef", "abcdefghijkl",
    "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ")
var text1 := 1 % The array index to change button 1 to
% The array of names for button 2
const button2Names : array 0 .. 4 of string := init ("Button 2", "a",
    "abcdef", "abcdefghijkl",
    "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ")
var text2 := 1 % The array index to change button 2 to

% The routines the widgets call when pressed
% Called when button 1 is pressed
procedure Button1Pressed
    locate (1, 1)
    put "Button 1 Pressed                        " ..
end Button1Pressed

% Called when button 2 is pressed
procedure Button2Pressed
    locate (1, 1)
    put "Button 2 Pressed                        " ..
end Button2Pressed

% Called when enable/disable button is pressed
procedure EnableDisablePressed
    locate (1, 1)
    if enable then
        put "Button 1 Enabled                        " ..
        GUI.Enable (button1) % Enable Button 1
        enable := false
        GUI.SetLabel (enableDisableButton, "Disable Button 1")
    else
        put "Button 1 Disabled                       " ..
        GUI.Disable (button1) % Disable Button 1
        enable := true
        GUI.SetLabel (enableDisableButton, "Enable Button 1")
    end if
end EnableDisablePressed

% Called when show/hide button is pressed
procedure ShowHidePressed
    locate (1, 1)
    if hide then
        put "Button 1 Hidden                         " ..
        GUI.Hide (button1) % Hide Button 1
        hide := false
        GUI.SetLabel (showHideButton, "Show Button 1")
    else
        put "Button 1 Shown                          " ..
        GUI.Show (button1) % Show Button 1
        hide := true
        GUI.SetLabel (showHideButton, "Hide Button 1")
    end if
end ShowHidePressed

% Called when move button is pressed
procedure MovePressed
    locate (1, 1)
    if right then
        put "Button 1 Moved Right                    " ..
        GUI.SetPosition (button1, 280, maxy - 125) % Move Button 1 Right
        right := false
        GUI.SetLabel (moveButton, "Move Button 1 Left")
    else
        put "Button 1 Moved Left                     " ..
        GUI.SetPosition (button1, 60, maxy - 125) % Move Button 1 Left
        right := true
        GUI.SetLabel (moveButton, "Move Button 1 Right")
    end if
end MovePressed

% Called when refresh button is pressed
procedure RefreshPressed
    Draw.FillBox (0, 0, maxx, maxy, GUI.GetBackgroundColour) % Clear the screen
    GUI.Refresh % Redraw all the widgets on the screen
end RefreshPressed

% Called when change button 1's text is pressed
procedure ChangeText1Pressed
    locate (1, 1)
    put "Button 1 Text Becomes: " + button1Names (text1) +
        "                                   " ..
    GUI.SetLabel (button1, button1Names (text1))
    text1 := (text1 + 1) mod 5
end ChangeText1Pressed

% Called when change button 2's text is pressed
procedure ChangeText2Pressed
    locate (1, 1)
    put "Button 2 Text Becomes: " + button2Names (text2) +
        "                                   " ..
    GUI.SetLabel (button2, button2Names (text2))
    text2 := (text2 + 1) mod 5
end ChangeText2Pressed

% Called when resize button is pressed
procedure ResizePressed
    locate (1, 1)
    if big then
        put "Button 1 Made Large                     " ..
        % Move and Resize Button 1
        GUI.SetPositionAndSize (button1, 280, maxy - 125, 100, 100)
        big := false
        GUI.SetLabel (resizeButton, "Make Button 1 Small")
    else
        put "Button 1 Made Small                     " ..
        % Move and Resize Button 1
        GUI.SetPositionAndSize (button1, 60, maxy - 125, 0, 0)
        big := true
        GUI.SetLabel (resizeButton, "Make Button 1 Large")
    end if
end ResizePressed

% Called when change default button is pressed
procedure ChangeDefaultPressed
    locate (1, 1)
    if newDefault = 1 then
        put "Button 1 Made Default                   " ..
        GUI.SetDefault (button1, true) % Make button 1 default
        newDefault := 2
        GUI.SetLabel (changeDefaultButton, "Set Button 2 as default")
    else
        put "Button 2 Made Default                   " ..
        GUI.SetDefault (button2, true) % Make button 2 default
        newDefault := 1
        GUI.SetLabel (changeDefaultButton, "Set Button 1 as default")
    end if
end ChangeDefaultPressed

% Called when quit button is pressed.
procedure QuitPressed
    GUI.Quit
end QuitPressed

% The main program
% Create the buttons
button1 := GUI.CreateButton (60, maxy - 125, 0, "Button 1", Button1Pressed)
button2 := GUI.CreateButtonFull (160, maxy - 125, 100, "Button 2",
    Button2Pressed, 100, GUI.NONE, true)

% Create the dividing line
var line := GUI.CreateLine (0, maxy - 135, maxx, maxy - 135, 0)

% Create the buttons
enableDisableButton := GUI.CreateButton (33, maxy - 170, 150,
    "Disable Button 1", EnableDisablePressed)
showHideButton := GUI.CreateButton (216, maxy - 170, 150, "Hide Button 1",
    ShowHidePressed)
moveButton := GUI.CreateButton (33, maxy - 200, 150, "Move Button 1 Right",
    MovePressed)
refreshButton := GUI.CreateButton (216, maxy - 200, 150, "Refresh",
    RefreshPressed)
changeText1Button := GUI.CreateButton (33, maxy - 230, 150,
    "Change Button 1 Text", ChangeText1Pressed)
changeText2Button := GUI.CreateButton (216, maxy - 230, 150,
    "Change Button 2 Text", ChangeText2Pressed)
resizeButton := GUI.CreateButton (33, maxy - 260, 150, "Make Button 1 Large",
    ResizePressed)
changeDefaultButton := GUI.CreateButton (216, maxy - 260, 150,
    "Set Button 1 as default", ChangeDefaultPressed)
quitButton := GUI.CreateButton (125, maxy - 290, 150, "Quit", QuitPressed)

% Process events, exit loop when GUI.QUIT called
loop
    exit when GUI.ProcessEvent
end loop

% Do the clean up.  Dispose of all but the main buttons.
GUI.Dispose (enableDisableButton)
GUI.Dispose (showHideButton)
GUI.Dispose (moveButton)
GUI.Dispose (refreshButton)
GUI.Dispose (changeText1Button)
GUI.Dispose (changeText2Button)
GUI.Dispose (resizeButton)
GUI.Dispose (changeDefaultButton)
GUI.Dispose (quitButton)

% Create a label to indicate we're finished
var quitMessage := GUI.CreateLabelFull (0, 0, "Execution Terminated",
    maxx, maxy - 135, GUI.CENTER + GUI.MIDDLE, 0)



: