遇到的问难是:
窗体中有两个TMaskEdit派生组件(该组件增加了一个key属性)。分别为MEdit1,MEdit2,其中MEdit1的Text属性值表示员工名称,MEdit1.key值表示员工编号;MEdit1的Text值表示部门名称,MEdit2.key表示部门编号。 MEdit2是ReadOnly的。在MEdit1的ONExit事件中自动更新MEdit2的key值和Text值。本人想当MEdit1.Text属性值为空时,自动清除Medit1.key、MEdit2.text、Medit2.Key值。在MEdit1.keyup事件中写了如下代码:
procedure form1.Medit1keyup()
begin
if Medit1.text='' then
begin
Medit1.key='';
Medit2.text:='';
Medit2.key:='';
end
end;程序运行时,如果按删除键删除Medit1的所有内容时,达到了预期目的,但是:如果先选中MEdit1的所有内容,再按其它键修改内容时,Medit1.key、MEdit2.text、Medit2.Key值没有被清除,因为KeyUP事件中Medit1.text<>'' 请问如果能做到:不管是按删除键还是按其它字符,只要MEdit1原有的所有字符被替换掉以后,就清除其key值和MEdit2的属性值。
窗体中有两个TMaskEdit派生组件(该组件增加了一个key属性)。分别为MEdit1,MEdit2,其中MEdit1的Text属性值表示员工名称,MEdit1.key值表示员工编号;MEdit1的Text值表示部门名称,MEdit2.key表示部门编号。 MEdit2是ReadOnly的。在MEdit1的ONExit事件中自动更新MEdit2的key值和Text值。本人想当MEdit1.Text属性值为空时,自动清除Medit1.key、MEdit2.text、Medit2.Key值。在MEdit1.keyup事件中写了如下代码:
procedure form1.Medit1keyup()
begin
if Medit1.text='' then
begin
Medit1.key='';
Medit2.text:='';
Medit2.key:='';
end
end;程序运行时,如果按删除键删除Medit1的所有内容时,达到了预期目的,但是:如果先选中MEdit1的所有内容,再按其它键修改内容时,Medit1.key、MEdit2.text、Medit2.Key值没有被清除,因为KeyUP事件中Medit1.text<>'' 请问如果能做到:不管是按删除键还是按其它字符,只要MEdit1原有的所有字符被替换掉以后,就清除其key值和MEdit2的属性值。
所以,要比较准确的判断是否修改,可以给这个控件增加一个属性OldText,用来记录原来的字符串.
在onExit事件中,可以根据OldText 是否等于Text来判断是否进行了修改.不过要记得处理后,给OldText赋值.