2015-08-28 46 views
0

我在网格 a 真编辑,我设置自动声明是的。如何从RealEdit的窗体网格中获取并设置实际值?

名称为myRealEdit数据源为myTablemyRealField

修改方法我想要得到的值,我需要做一个如果控制。

如果该值为0,则更改归档的值如果该值不是0 会抛出输入的值并恢复以前的值。

我用这个代码,在改性方法:

public boolean modified() 
{ 
boolean ret; 
real storedValue; 

ret = super(); 

storedValue = myTable.myRealField; // there is another way to get the value ? 

if (myRealEdit.valueStr() == "0") 
//accept the value 

if (!myRealEdit.valueStr() != "0") 
{ 
myRealEdit.realValue(storedValue); 
} 

return ret; 
} 

如果该值不为0(零)不恢复以前的值。我不得不使用另一种方法吗?还有另一种方法来获得真正的价值?

谢谢咨询,

享受!

+0

上了一个台阶,你想完成什么? 由于您的代码被完全破坏,很难扣除您尝试的内容。 我可以猜测:你不会接受零值。你是否考虑过表格字段,数据源字段或控件上的'Mandatory'属性? –

+0

谢谢@ JanB.Kjeldsen对您的评论。 我想只接受0值,在另一种情况下,我再次将值设置为以前的值。 例如:我存储了值50,如果我把值80,我不接受这个值,并在_myRealEdit_ – ulisses

+0

中恢复50但我不知道如何从_myRealEdit_ – ulisses

回答

1

既然您在回答中使用了modified方法,我想您要将此字段验证放在控件级别(而不是数据源或表级别)上。

作为@Jan B. Kjeldsen在他的评论中建议,你应该使用validate方法来做这个验证。只有当您想要添加除字段值修改以外还执行的某些逻辑时,才使用modified方法。

validate方法看上去就像

public boolean validate() 
{ 
    return this.realValue() == 0 && super() || checkFailed(strFmt("Value %1 is not permitted", this.realValue())); 
    // TODO please replace this with a Label and explain to the user why the value is not permitted and what he or she can do to resolve this 
} 
+0

谢谢大家,工作顺利! – ulisses

0

我找到一个可行的办法,

我用这个代码:

public boolean modified() 
{ 
boolean ret; 

if (myRealEdit.valueStr() == "0") 
{ 
//accept the value 
    ret = super(); 
} 
if (!myRealEdit.valueStr() != "0") 
{ 
    info("Value not permit"); 
    // nothing to do 
} 
return ret; 
} 

这样,当且仅当我有一个值0我修改的值。

我需要获取或读取从修改方法中的myRealEdit插入的实际值。

如果社区有插入评论或改进,将会有更多的信息。

+0

与Jan B. Kjeldsen建议的一样,改用'validateField'方法,如果此方法返回'false',则该字段将自动重置为其以前的值。 此外,请勿使用'valueStr()'获取实际控件的值。改用'realValue()'并将其与实际值进行比较。如果(!myRealEdit.valueStr()!=“0”)表达式不符合你的描述(我很困惑它为什么会为你编译,我得到一个操作数类型编译错误,因为一个布尔值不能与字符串进行比较)。 –

+0

测试'valueStr()'而不是'realValue()'感觉不对。 –

相关问题