Delphi MaskEdit覆盖回车时的最后一个字符

Delphi MaskEdit覆盖回车时的最后一个字符,delphi,delphi-xe5,masking,Delphi,Delphi Xe5,Masking,有一个简单的cxMaskEdit,具有标准掩码:'###########;1; '. 此外,自动选择为False 很好,但是当我使用cxMaskEdit.SetFocus返回cxMaskEdit时,它会更改cxMaskEdit的最后一个字符 例如: 12 141在cxMaskEdit enter(通过鼠标。通过设置焦点)上变为12 141 140 对这种行为有帮助吗? l、 e:这种行为是由 procedure TForm1.cxMaskEdit1KeyDown(Sender: TObject;

有一个简单的cxMaskEdit,具有标准掩码:'###########;1; '. 此外,自动选择为False

很好,但是当我使用cxMaskEdit.SetFocus返回cxMaskEdit时,它会更改cxMaskEdit的最后一个字符

例如: 12 141在cxMaskEdit enter(通过鼠标。通过设置焦点)上变为12 141 140

对这种行为有帮助吗? l、 e:这种行为是由

procedure TForm1.cxMaskEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (cxMaskEdit1.CursorPos = 10) then
    if ((Key > 48) and (Key < 58)) or ((Key > 95) and (Key < 106)) then
    begin
      cxMaskEdit2.SetFocus;
      // cxMaskEdit2.SelStart := 0;
    end;
end;
过程TForm1.cxMaskEdit1KeyDown(发送方:TObject;var关键字:Word;
换档:t换档状态);
开始
如果(cxMaskEdit1.CursorPos=10),则
如果((键>48)和(键<58))或((键>95)和(键<106)),则
开始
cxMaskEdit2.SetFocus;
//cxMaskEdit2.SelStart:=0;
结束;
结束;

使用选择开始和长度解决

  if ((MaskEdit1.SelStart = 9) and (((47 < Key) and (Key < 58)) or (95 < Key)
    and (Key < 106))) then
  begin
    MaskEdit2.SetFocus;
    MaskEdit2.SelStart := 0;
    MaskEdit2.SelLength := 1;
  end;
if((MaskEdit1.SelStart=9)和((47
此MaskEdit上有任何事件吗?如果您刚刚打开一个新项目,在窗体上拖动一个cxMaskEdit并设置其掩码,它是否显示相同的行为?向表单添加第二次编辑,以便能够更改焦点。作为事件,仅在按下键时。明天将检查一个新项目。尝试更改
cxMaskEdit2.SetFocus执行(WM_NEXTDLGCTL,0,0)
查看是否仍会发生这种情况。此消息使焦点跳转到TabOrder列表中的下一个控件。我相信您必须调试cxMaskEdit或询问开发人员。。。这听起来像是组件中的一个bug。我不能用标准的TMaskEdit复制。这是你必须调试的东西。我建议你去DevExpress论坛(顺便说一句,他们在那里有很好的支持)看看这是否是以前发生过的问题,并询问是否没有。