如何使用 x++ 代码动态更改表单中按钮的可见性?
How can the visibility of a button in a form be changed dynamically using x++ code?
如何更改按钮控件的可见性 MyButton
?
我有一个表单 MyForm
,我想在其中为我的 MyButton
按钮控件设置可见性 属性。
我在表单的 init
方法中使用了这段代码:
public void init()
{
MyTable myTable;
;
while select myTable where myTable.UserId == curUserId()
{
if (myTable.FlagField == NoYes::Yes )
{
myButton.visible(true);
}
if (!myTable.FlagField == NoYes::No )
{
myButton.visible(false);
}
}
super();
}
MyButton
的属性AutoDeclaration
设置为Yes
。但是当我打开表单时,出现以下错误:
"Failure initializing FormButtonControl object."
我想我必须使用 FormButtonControl class,但我不知道该怎么做。
窗体的控件由窗体的 init
方法中的 super()
调用初始化。要更改表单控件的属性,必须先对其进行初始化,因此必须将更改 属性 的代码放在 super()
调用之后。
FH-Inway 的回答从代码的角度来看是正确的,但我想指出你所做的是不正确的,除非你的 mineTable
只有 1 条匹配记录,否则将无法正常运行。
目前所写的,当表单被实例化时,你基本上循环 mineTable
并为每个记录 where mineTable.UserId == curUserId()
一遍又一遍地切换 myButton
可见和隐藏,然后是表单显示,无论最后一条记录是什么。
这就是while select [table] where [clause] {[code]}
和select [table] where [clause];
的区别。
如果您在 table 中只有一条记录,则应将其更改为:
MineTable mineTable;
super();
select firstonly mineTable where mineTable.UserId == curUserId();
if (mineTable)
{
if (mineTable.FlagField== NoYes::Yes )
{
myButton.visible(true);
}
if(!mineTable.FlagField== NoYes::No )
{
myButton.visible(false);
}
}
else
{
throw error("Record not found or whatever your error should be");
}
如何更改按钮控件的可见性 MyButton
?
我有一个表单 MyForm
,我想在其中为我的 MyButton
按钮控件设置可见性 属性。
我在表单的 init
方法中使用了这段代码:
public void init()
{
MyTable myTable;
;
while select myTable where myTable.UserId == curUserId()
{
if (myTable.FlagField == NoYes::Yes )
{
myButton.visible(true);
}
if (!myTable.FlagField == NoYes::No )
{
myButton.visible(false);
}
}
super();
}
MyButton
的属性AutoDeclaration
设置为Yes
。但是当我打开表单时,出现以下错误:
"Failure initializing FormButtonControl object."
我想我必须使用 FormButtonControl class,但我不知道该怎么做。
窗体的控件由窗体的 init
方法中的 super()
调用初始化。要更改表单控件的属性,必须先对其进行初始化,因此必须将更改 属性 的代码放在 super()
调用之后。
FH-Inway 的回答从代码的角度来看是正确的,但我想指出你所做的是不正确的,除非你的 mineTable
只有 1 条匹配记录,否则将无法正常运行。
目前所写的,当表单被实例化时,你基本上循环 mineTable
并为每个记录 where mineTable.UserId == curUserId()
一遍又一遍地切换 myButton
可见和隐藏,然后是表单显示,无论最后一条记录是什么。
这就是while select [table] where [clause] {[code]}
和select [table] where [clause];
的区别。
如果您在 table 中只有一条记录,则应将其更改为:
MineTable mineTable;
super();
select firstonly mineTable where mineTable.UserId == curUserId();
if (mineTable)
{
if (mineTable.FlagField== NoYes::Yes )
{
myButton.visible(true);
}
if(!mineTable.FlagField== NoYes::No )
{
myButton.visible(false);
}
}
else
{
throw error("Record not found or whatever your error should be");
}