How to resolve the algorithm GUI component interaction step by step in the Elena programming language
How to resolve the algorithm GUI component interaction step by step in the Elena programming language
Table of Contents
Problem Statement
Almost every application needs to communicate with the user in some way. Therefore, a substantial part of the code deals with the interaction of program logic with GUI components. Typically, the following is needed:
For a minimal "application", write a program that presents a form with three components to the user:
The field is initialized to zero. The user may manually enter a new value into the field, or increment its value with the "increment" button. Entering a non-numeric value should be either impossible, or issue an error message. Pressing the "random" button presents a confirmation dialog, and resets the field's value to a random value if the answer is "Yes". (This task may be regarded as an extension of the task Simple windowed application).
Let's start with the solution:
Step by Step solution about How to resolve the algorithm GUI component interaction step by step in the Elena programming language
Source code in the elena programming language
import forms;
import extensions;
public class MainWindow : SDIDialog
{
Button btmIncrement;
Button btmRandom;
Edit txtNumber;
constructor new()
<= super new()
{
btmIncrement := Button.new();
btmRandom := Button.new();
txtNumber := Edit.new();
self
.appendControl:btmIncrement
.appendControl:btmRandom
.appendControl:txtNumber;
self.Caption := "Rosseta Code";
self.setRegion(100, 100, 180, 140);
txtNumber.setRegion(20, 7, 140, 25);
txtNumber.Caption := "0";
btmIncrement.setRegion(20, 35, 140, 25);
btmIncrement.Caption := "Increment";
btmIncrement.onClick := (args){ self.onButtonIncrementClick() };
btmRandom.setRegion(20, 65, 140, 25);
btmRandom.Caption := "Random";
btmRandom.onClick := (args){ self.onButtonRandomClick() };
}
private onButtonIncrementClick()
{
var number := txtNumber.Value.toInt();
number := number + 1;
self.changeTextBoxValue(number)
}
private onButtonRandomClick()
{
if(messageDialog.showQuestion("Inf", "Really reset to random value?"))
{
self.changeTextBoxValue(randomGenerator.nextInt(99999999))
}
}
private changeTextBoxValue(number)
{
txtNumber.Caption := number.toString()
}
}
import xforms;
import forms;
import extensions;
public class MainWindow
{
SDIForm form;
Button btmIncrement;
Button btmRandom;
Edit txtNumber;
constructor new()
{
form := xforms.executePath("main.xs", self);
btmIncrement := form.Controls.btmIncrement;
btmRandom := form.Controls.btmRandom;
txtNumber := form.Controls.txtNumber;
}
onButtonIncrementClick(sender)
{
var number := txtNumber.Value.toInt();
number := number + 1;
self.changeTextBoxValue(number)
}
onButtonRandomClick(sender)
{
if(messageDialog.showQuestion("Inf", "Really reset to random value?"))
{
self.changeTextBoxValue(randomGenerator.eval(99999999))
}
}
private changeTextBoxValue(number)
{
txtNumber.Caption := number.toString()
}
dispatch() => form;
}
You may also check:How to resolve the algorithm Boolean values step by step in the bc programming language
You may also check:How to resolve the algorithm Happy numbers step by step in the Lambdatalk programming language
You may also check:How to resolve the algorithm Smarandache-Wellin primes step by step in the EasyLang programming language
You may also check:How to resolve the algorithm Hello world/Newline omission step by step in the mIRC Scripting Language programming language
You may also check:How to resolve the algorithm Long literals, with continuations step by step in the PureBasic programming language