如何捕获MaskEdit非法输入?(100分)

  • 主题发起人 主题发起人 Zyee
  • 开始时间 开始时间
Z

Zyee

Unregistered / Unconfirmed
GUEST, unregistred user!
假如定义了MASKEDIT编辑框的格式,Such as #0000000000000;
要是用户没有连着输入13个数字,则系统就会报错:Invalid Input! Use Escape Key to Cancel.
如何捕获这个 Exception,加入另外异常处理程序?
请教诸位高手的指点。Thanks.
 
onkeyPress()
 
在onkeypress中加入检测代码判断是否符合要求。
 
可以定义一个事件处理过程,替换默认的异常事件处理:
1、在tform 的 private 块中定义如下过程:
Procedure MyExceptionHandle(Sender: TObject;
E: Exception);
2、在 tform.oncreate中,替换默认的异常事件处理:
Application.OnException:=MyExceptionHandle;
3、编写自己的事件处理过程:
Procedure TForm1.MyExceptionHandle(Sender: TObject;
E: Exception);
begin
If E Is EDbEditError then
begin
//这里就是对这个异常的处理
If TComponent(Sender).Name='MaskEdit1' then
Showmessage(TComponent(Sender).Name)
else
Inherited;
end
else
Inherited;
end;
 
如果那样的话,maskedi还不如不用的好,既然每敲一个键,
都要判断,maskedit就没有存在的必要了
 
to SuperMMX:
不知道你所说的“每敲一个键,都要判断”是什么意思。事实上,象tedit、
tmaskedit等确实是每敲一个键,都要进行处理的(windows),只不过你自己
没有处理罢了。
 
Use global exception handling:
Application.OnException := GlobalExceptionHandler;
procedure TfrmMain.GlobalExceptionHandler(Sender: TObject;
E: Exception);
var
cExp: TObject;
begin
cExp := ExceptObject;
if cExp=nil then
Exit;
if (cExp is EDBEditError) then
begin
// Here
ShowMsg('输入错误!请按Esc');
end else
begin
// Other exceptions
end;
end;

HTH
 
接受答案了.
 
后退
顶部