axapta - 使用 Dynamic AX 2012 创建简单的计算器
问题描述
我是 Dynamic AX 的新手,我想创建一个带有输入值的简单计算器并以下列形式显示结果:
解决方案
您的问题非常广泛,因为有很多策略可以解决该任务,但是从您提供的屏幕截图来看,您有一个应该包含所有计算逻辑的类和一个向用户提供 UI 的表单,其中包含两个输入字段和一个应该显示操作结果的输出字段。
所以最简单的解决方案是:
- 实现
Kalkulator
类,该类公开了两个parm
设置操作数的方法和四个执行操作并返回结果的方法:add
、subtract
和。multiply
divide
- 在表单中创建该类的私有实例,对其
Kalkulator
进行初始化,在用户单击其中一个按钮时设置操作数,调用适当的方法来运行操作并在表单字段上输出结果。
因此,假设操作数是整数值(出于演示目的),您TRN_Kalkulator
可能看起来像这样:
class TRN_Kalkulator
{
private int value1;
private int value2;
public int parmValue1(int _value = value1)
{
value1 = _value;
return value1;
}
public int parmValue2(int _value = value2)
{
value2 = _value;
return value2;
}
public int Sum()
{
return value1 + value2;
}
public int Diff()
{
return value1 - value2;
}
public int Mult()
{
return value1 * value2;
}
public int Div()
{
return value2 == 0 ? 0 : value1 / value2;
}
}
在表单的类声明中,您必须声明一个私有实例,TRN_Kalkulator
该实例将通过覆盖该init()
方法进行初始化:
TRN_Kalkulator calculator;
//...
public void init()
{
super();
calculator = new TRN_Kalkulator();
}
最后,当单击其中一个按钮时,您可以通过读取表单字段的值来解析用户输入,设置操作数,运行操作并输出结果。所有这些都是通过覆盖click()
每个按钮上的方法来完成的:
// read text values of the textboxes and parse them to integer
int a = str2Int(TxtOperand1.text());
int b = str2Int(TxtOperand2.text());
// set up calculator operands
calculator.parmValue1(a);
calculator.parmValue2(b);
// call the operation depending on which button was clicked
int result = calculator.Sum();
// set result textbox text
TxtResult.text(int2Str(result));
请注意,有很多方法可以改进此代码(例如在表单上使用一些显示和编辑方法),您绝对应该这样做,但此实现适合您当前的设置,并且应该为您指明正确的方向。
推荐阅读
- spring-batch - Spring Batch - 自定义阅读器和编写器
- html - 为什么我们需要在 css 中使用 -webkit?
- c# - 无法在 Hangfire 中安排超过 1 个作业
- matlab - 在 matlab 中声明一个我们不知道其大小的向量
- java - 如何在 Java 中发布这个 http 请求?
- ios - 内存管理 - CVPixelBuffer 到 UIImage,使用 CIImage 和 VTCreateCGImageFromCVPixelBuffer 的区别
- angular - 如何在另一个订阅中使用和维护多个订阅?
- javascript - Phaser.Scene:如何使“游戏”属性可用?
- android - 调用 notifyDataSetChanged() 时 RecyclerView 闪烁
- mysql - 如何解决 sql 错误“产品组合已多样化,在第一行包含一个非常成功的多品牌”