2013-10-08 68 views
3

好吧,我目前是一个11年级的学生,这是IT。我正在尝试完成一项实用任务,但遇到了一些问题,我正在使用的教科书没有告诉我如何在用户没有将数据输入到RichEdit中时创建错误消息。任何人都可以告诉我如何做到这一点?感谢您花时间帮助。创建错误消息德尔福7

+1

例如这种方式'如果RichEdit1.Text =''然后MessageDlg('该字段不能为空!',mtError,[mbOK],0)'在将进行验证的事件中(通常是'OnExit'事件)。 – TLama

+0

谢谢!那很快...现在尝试。 – DNgentle

+1

@DNgentle一个建议是积极主动的,在把枪放下之前使用你的资源给你:-)。 –

回答

4

这是你如何养育一个通用的异常(使用SysUtils.Exception类):

raise Exception.Create('Error Message'); 

未处理的异常会导致执行路径逃入德尔福RTL的内部默认的异常处理程序,它会再次出现对用户的价值Exception.Message

你甚至可以处理自己的异常这样的:

try 
    ... 
    raise Exception.Create('Error Message'); 
    ... 
except 
    on E: Exception do 
    begin 
    ShowMessage(E.Message); 
    end; 
end; 

你不会真正做到这一点,虽然。您引发异常,以便调用您的方法的代码可以处理该错误。

如果您想在其他地方(在调用者中)处理错误,请引发异常。

要简单的显示系统标准的错误对话框,您可以使用MessageDlg

MessageDlg('Error Message', mtError, [mbOK], 0); 

在这种情况下,窗口的标题是简单的“错误”。如果你必须设置一个标题,使用CreateMessageDialog

with CreateMessageDialog('Error Message', mtError, [mbOK], mbOK) do 
begin 
    try 
    Caption := 'Error Caption'; 
    ShowModal; 
    finally 
    Release; 
    end; 
end; 

Exception类是在System.SysUtilsMessageDlgCreateMessageDialogVcl.Dialogs

或者使用TApplication.MessageBox()方法:

Application.MessageBox('Error Message', 'Error Caption', MB_OK or MB_ICONERROR); 
+0

或者,如果使用'TApplication.MessageBox()'或'Winapi.MessageBox()'而不是'MessageDlg()',则可以将标题设置为输入参数。 –

+1

@RemyLebeau,感谢您提高答案。 –

+0

要考虑的另一件事是创建自己的异常类型,例如'ENoContent',它允许更系统地捕获某些类型的异常,然后通过一个消息框在一个地方进行通用处理等。 –