如何截取DBEDIT控件的系统出错信息(50分)

  • 主题发起人 主题发起人 litte wing
  • 开始时间 开始时间
L

litte wing

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾不要笑,我想将DBEDIT控件的系统英文提示信息换成中文的如何进行?
例:某一日期型字段,与DBEDIT连接后,如果不输入合法的日期型数据,
系统出现提示信息,如何截取并换成中文?
 
用try...except试试。
 
procedure TloginForm1.Button1Click(Sender: TObject);
var
flag:boolean;
begin
flag:= true;
try
strtodate(edit1.text);
except
on econverterror do
flag:=false;
end;
if flag=false then
showmessage(Chinese);
end;
 
请注意是DBedit控件,而不是edit控件,edit控件用try except是可以的,
并且系统错误信息是DBedit控件Lost it focus 时,根本无法在系统出现
提示信息之前截取它.
 
试一试下面的方法吧

Application.OnException := AppException;


procedure TForm1.AppException(Sender: TObject; E: Exception);

begin
if ..... then
showmessage(...)
end;
 
DBEdit1Change。。
try
dbeidt1.datafield:=.....
except
....
end;

试一下
 
补充:

Application.OnException := AppException;


procedure TForm1.AppException(Sender: TObject; E: Exception);

begin
if E is EDBEditError then
showmessage(...)
end;
 
如果要完全汉化这些信息,建议直接修改DELPHI代码。在目录C:/Program Files/Borland/Delphi5/Source/Vcl 下面有一些带类似*const.pas的文件,如:BdeConst.pas,Consts.pas,DbConsts.pas等等。里面有各种提示信息,你可以自己把它汉化,重新编译即可。注意该路径一定要在你的编译搜索路径下面。某些界面,如QuickRep的界面,你也可以在C:/Program Files/Borland/Delphi5/lib路径下面找到qrprev.dfm文件,把里面的提示、按钮的CAPTION、甚至FORM的字体等统统改成汉字,宋体,然后你编译出的项目中的QREPORT全部都是中文界面了!
 
adminis,你好,我知道可以通过直接修改delphi代码,但是工作量实在太大,
不知道那位大虾有现成的,请e_mail给我,h87401@371.net.
 
同意cmldy
《Delphi5开发指南》中有专门的例子说明如何自已设错误陷阱
 
{*******************************************************}
{ }
{ Borland Delphi Visual Component Library }
{ }
{ Copyright (c) 1995,99 Inprise Corporation }
{ }
{*******************************************************}

unit Consts;

interface

resourcestring
SOpenFileTitle = '打开';
SAssignError = '无法将一个 %s 分配给一个 %s';
SFCreateError = '无法建立文件 %s';
SFOpenError = '无法打开文件 %s';
SReadError = '流读取错误';
SWriteError = '流写入错误';
SMemoryStreamError = '扩展内存流时内存不足';
SCantWriteResourceStreamError = '无法写入一个只读的资源流';
SDuplicateReference = 'WriteObject 对同一个实例调用了两次';
SClassNotFound = '类 %s 未找到';
SInvalidImage = '无效的流格式';
SResNotFound = '资源 %s 未找到';
SClassMismatch = '资源 %s 是无效的类';
SListIndexError = '列表索引超界 (%d)';
SListCapacityError = '列表容量超界 (%d)';
SListCountError = '列表总数超界 (%d)';
SSortedListError = '操作不允许在排序列表中执行';
SDuplicateString = '字符串列表不允许重复';
SInvalidTabIndex = '标签索引超界';
SInvalidTabPosition = '标签位置与当前的标签类型冲突';
SInvalidTabStyle = '标签类型与当前的标签位置冲突';
SDuplicateName = '已经存在名为 %s 的组件';
SInvalidName = '''''%s'''' 不是有效的组件名';
SDuplicateClass = '已经存在名为 %s 的类';
SNoComSupport = '%s 没有注册为 COM 类';
SInvalidInteger = '''''%s'''' 不是有效的整数';
SLineTooLong = '行超长';
SInvalidPropertyValue = '无效的属性值';
SInvalidPropertyPath = '无效的属性路径';
SInvalidPropertyType = '无效的属性类型: %s';
SInvalidPropertyElement = '无效的属性元素: %s';
SUnknownProperty = '属性不存在';
SReadOnlyProperty = '属性只读';
SPropertyException = '读取错误 %s%s%s: %s';
SAncestorNotFound = '未找到 ''%s'' 的祖先';
SInvalidBitmap = '位图图象无效';
SInvalidIcon = '图标图象无效';
SInvalidMetafile = '元文件无效';
SInvalidPixelFormat = '无效的像素格式';
SBitmapEmpty = '位图为空';
SScanLine = '扫描线索引超界';
SChangeIconSize = '无法改变图标大小';
SOleGraphic = 'TOleGraphic 上的无效操作';
SUnknownExtension = '未知的图象文件扩展名 (.%s)';
SUnknownClipboardFormat = '不支持的剪贴板格式';
SOutOfResources = '系统资源不足';
SNoCanvasHandle = '不允许绘图';
SInvalidImageSize = '无效的图象大小';
STooManyImages = '图象太多';
SDimsDoNotMatch = '图象维数与图象列表维数不匹配';
SInvalidImageList = '无效的图象列表';
SReplaceImage = '无法替换图象';
SImageIndexError = '无效的图象列表索引';
SImageReadFail = '从流中读取图象列表数据失败';
SImageWriteFail = '将图象列表数据写入流失败';
SWindowDCError = '创建窗口设备描述失败';
SClientNotSet = 'TDrag 客户区没有初始化';
SWindowClass = '创建窗口类失败';
SWindowCreate = '创建窗口失败';
SCannotFocus = '无法聚焦到失效的或不可见的窗口';
SParentRequired = '控件 ''%s'' 没有父窗口';
SMDIChildNotVisible = '无法隐藏 MDI 子窗口';
SVisibleChanged = '无法在 OnShow 或 OnHide 事件中改变可是否视';
SCannotShowModal = '无法使不可见窗口成为模态';
SScrollBarRange = '滚动条属性超界';
SPropertyOutOfRange = '%s 属性超界';
SMenuIndexError = '菜单索引超界';
SMenuReinserted = '菜单被插入了两次';
SMenuNotFound = '子菜单不在菜单内';
SNoTimers = '可用的计时器不足';
SNotPrinting = '打印机当前不在打印状态';
SPrinting = '打印正在进行';
SPrinterIndexError = '打印机索引超界';
SInvalidPrinter = '选定的打印机无效';
SDeviceOnPort = '%s 在 %s 上';
SGroupIndexTooLow = '组索引不能小于前一个菜单项的组索引';
STwoMDIForms = '每个应用程序只能有一个 MDI 窗口';
SNoMDIForm = '无法创建窗口. 目前没有活动的 MDI 窗口';
SRegisterError = '无效的组件注册信息';
SImageCanvasNeedsBitmap = '当图象为位图时才能修改它';
SControlParentSetToSelf = '控件不能将自身作为父窗口';
SOKButton = '确定';
SCancelButton = '取消';
SYesButton = '是[&Y]';
SNoButton = '否[&N]';
SHelpButton = '帮助[&H]';
SCloseButton = '关闭[&C]';
SIgnoreButton = '忽略[&I]';
SRetryButton = '重试[&R]';
SAbortButton = '中断[&A]';
SAllButton = '全部[&A]';

SCannotDragForm = '无法拖动窗口';
SPutObjectError = '移动对象给不明确的项目';
SCardDLLNotLoaded = '无法载入 CARDS.DLL';
SDuplicateCardId = '发现重复的 CardId';

SDdeErr = 'DDE 返回错误 ($0%x)';
SDdeConvErr = 'DDE 错误 - 会话未确定 ($0%x)';
SDdeMemErr = 'DDE 运行内存不足时发生错误 ($0%x)';
SDdeNoConnect = '无法连接到 DDE 会话';

SFB = 'FB';
SFG = 'FG';
SBG = 'BG';
SOldTShape = '无法载入旧版本的 TShape';
SVMetafiles = '元文件';
SVEnhMetafiles = '扩展元文件';
SVIcons = '图标';
SVBitmaps = '位图';
SGridTooLarge = '表格太大,无法进行操作';
STooManyDeleted = '过多的行或列被删除';
SIndexOutOfRange = '表格索引超界';
SFixedColTooBig = '固定列必须少于总列数';
SFixedRowTooBig = '固定行必须少于总行数';
SInvalidStringGridOp = '无法在表格中删除或插入行';
SParseError = '%s 在第 %d 行';
SIdentifierExpected = '希望一个标识符';
SStringExpected = '希望一个字符串';
SNumberExpected = '希望一个数字';
SCharExpected = '希望一个''''%s''''';
SSymbolExpected = '希望一个%s';
SInvalidNumber = '无效的数字值';
SInvalidString = '无效的字符串常数';
SInvalidProperty = '无效的属性值';
SInvalidBinary = '无效的二进制值';
SOutlineIndexError = '未发现 Outline 索引';
SOutlineExpandError = '父节点必须展开';
SInvalidCurrentItem = '对当前项目无效的值';
SMaskErr = '无效的输入值';
SMaskEditErr = '无效的输入值. 按[Esc]键取消所作的修改';
SOutlineError = '无效的 Outline 索引';
SOutlineBadLevel = '级别分配错误';
SOutlineSelection = '无效的选择';
SOutlineFileLoad = '载入文件错误';
SOutlineLongLine = '行超长';
SOutlineMaxLevels = '超过了 Outline 最大深度';

SMsgDlgWarning = '警告';
SMsgDlgError = '错误';
SMsgDlgInformation = '信息';
SMsgDlgConfirm = '确认';
SMsgDlgYes = '是[&Y]';
SMsgDlgNo = '否[&N]';
SMsgDlgOK = '确定';
SMsgDlgCancel = '取消';
SMsgDlgHelp = '帮助[&H]';
SMsgDlgHelpNone = '没有可用的帮助';
SMsgDlgHelpHelp = '帮助';
SMsgDlgAbort = '中断[&A]';
SMsgDlgRetry = '重试[&R]';
SMsgDlgIgnore = '忽略[&I]';
SMsgDlgAll = '全部[&A]';
SMsgDlgNoToAll = '全部不是[&o]';
SMsgDlgYesToAll = '全是[&A]';

SmkcBkSp = '回退';
SmkcTab = 'Tab';
SmkcEsc = 'Esc';
SmkcEnter = '回车';
SmkcSpace = '空格';
SmkcPgUp = 'PgUp';
SmkcPgDn = 'PgDn';
SmkcEnd = 'End';
SmkcHome = 'Home';
SmkcLeft = '左';
SmkcUp = '上';
SmkcRight = '右';
SmkcDown = '下';
SmkcIns = '插入';
SmkcDel = '删除';
SmkcShift = 'Shift+';
SmkcCtrl = 'Ctrl+';
SmkcAlt = 'Alt+';

srUnknown = '(未知)';
srNone = '(无)';
SOutOfRange = '取值必须从 %d 到 %d';
SCannotCreateName = '无法为未命名的组件建立缺省的方法名';

SDateEncodeError = '参数对于对于日期编码无效';
STimeEncodeError = '参数对于对于时间编码无效';
SInvalidDate = '''''%s'''' 不是有效的日期';
SInvalidTime = '''''%s'''' 不是有效的时间';
SInvalidDateTime = '''''%s'''' 不是有效的日期和时间';
SInvalidFileName = '无效的文件名 - %s';
SDefaultFilter = '所有文件 (*.*)|*.*';
sAllFilter = '全部';
SNoVolumeLabel = ': [ - 无卷标 - ]';
SInsertLineError = '无法插入行';

SConfirmCreateDir = '指定的目录不存在. 创建吗?';
SSelectDirCap = '选择目录';
SCannotCreateDir = '无法创建目录';
SDirNameCap = '目录名[&N]:';
SDrivesCap = '磁盘驱动器[D&]:';
SDirsCap = '目录[&D]:';
SFilesCap = '文件[&F]: (*.*)';
SNetworkCap = '网络[&t]...';

SColorPrefix = '颜色'; //!! obsolete - delete in 5.0
SColorTags = 'ABCDEFGHIJKLMNOP'; //!! obsolete - delete in 5.0

SInvalidClipFmt = '无效的剪贴板格式';
SIconToClipboard = '剪贴板不支持图标';
SCannotOpenClipboard = '无法打开剪贴板';

SDefault = '缺省';

SInvalidMemoSize = '文本超过 Memo 容量';
SCustomColors = '自定义颜色';
SInvalidPrinterOp = '指定的打印机不支持该操作';
SNoDefaultPrinter = '目前没有选择缺省打印机';

SIniFileWriteError = '无法写入 %s';

SBitsIndexError = '位索引超界';

SUntitled = '(未命名)';

SInvalidRegType = '对于 ''%s'' 无效的数据类型';
SRegCreateFailed = '创建主键 %s 失败';
SRegSetDataFailed = '设置 ''%s'' 值失败';
SRegGetDataFailed = '读取 ''%s'' 值失败';

SUnknownConversion = '未知的 RichEdit 转换文件扩展名 (.%s)';
SDuplicateMenus = '菜单 ''%s'' 已经被其他窗口使用了';

SPictureLabel = '图象:';
SPictureDesc = ' (%dx%d)';
SPreviewLabel = '预览';

SCannotOpenAVI = '无法打开 AVI';

SNotOpenErr = '没有打开的 MCI 设备';
SMPOpenFilter = '所有文件 (*.*)|*.*|Wave 文件 (*.wav)|*.wav|Midi 文件 (*.mid)|*.mid|Avi 文件 (*.avi)|*.avi';
SMCINil = '';
SMCIAVIVideo = 'AVI 视频';
SMCICDAudio = 'CD 音频';
SMCIDAT = 'DAT';
SMCIDigitalVideo = '数字视频';
SMCIMMMovie = '影片';
SMCIOther = '其他';
SMCIOverlay = '覆盖';
SMCIScanner = '扫描器';
SMCISequencer = '序列发生器';
SMCIVCR = 'VCR';
SMCIVideodisc = '视盘';
SMCIWaveAudio = 'Wave 音频';
SMCIUnknownError = '未知的错误代号';

SBoldItalicFont = '粗体 斜体';
SBoldFont = '粗体';
SItalicFont = '斜体';
SRegularFont = '正常';

SPropertiesVerb = '属性';

sWindowsSocketError = 'Windows 套接字错误: %s (%d), 产生于 API 调用 ''%s'' 处';
sAsyncSocketError = '异步套接字错误 %d';
sNoAddress = '未指定地址';
sCannotListenOnOpen = '无法从打开的套接字中读取';
sCannotCreateSocket = '无法创建新的套接字';
sSocketAlreadyOpen = '套接字已打开';
sCantChangeWhileActive = '套接字活动时无法修改值';
sSocketMustBeBlocking = '套接字必须是块模式';
sSocketIOError = '%s 错误 %d, %s';
sSocketRead = '读';
sSocketWrite = '写';

SServiceFailed = '%s 服务失败: %s';
SExecute = '执行';
SStart = '开始';
SStop = '停止';
SPause = '暂停';
SContinue = '继续';
SInterrogate = '询问';
SShutdown = '关闭';
SCustomError = '服务在自定义消息(%d)中失败: %s';
SServiceInstallOK = '服务安装成功';
SServiceInstallFailed = '服务 "%s" 安装失败,错误信息为: "%s"';
SServiceUninstallOK = '服务卸载成功';
SServiceUninstallFailed = '服务 "%s" 卸载失败,错误信息为: "%s"';

SInvalidActionRegistration = '动作注册无效';
SInvalidActionUnregistration = '动作取消注册无效';
SInvalidActionEnumeration = '动作列举无效';
SInvalidActionCreation = '动作创建无效';

SDockedCtlNeedsName = '驻停式控件必须具有名称';
SDockTreeRemoveError = '从驻停树中删除控件错误';
SDockZoneNotFound = ' - 未发现驻停区域';
SDockZoneHasNoCtl = ' - 驻停区域中没有控件';

SAllCommands = '全部命令';

SDuplicateItem = '列表不充许复制 ($0%x)';

SDuplicatePropertyCategory = '属性类别 %s 已存在';
SUnknownPropertyCategory = '属性类别不存在(%s)';

SActionCategoryName = '操作';
SActionCategoryDesc = '操作属性(和/或)事件';
SDataCategoryName = '数据';
SDataCategoryDesc = '数据属性(和/或)事件';
SDatabaseCategoryName = '数据库';
SDatabaseCategoryDesc = '数据库和数据感知属性(和/或)事件';
SDragNDropCategoryName = '拖曳,丢弃和入坞';
SDragNDropCategoryDesc = '拖曳,丢弃和入坞属性(和/或)事件';
SHelpCategoryName = '帮助和提示';
SHelpCategoryDesc = '帮助和提示属性(和/或)事件';
SLayoutCategoryName = '布局';
SLayoutCategoryDesc = '布局属性(和/或)事件';
SLegacyCategoryName = '遗产';
SLegacyCategoryDesc = '遗产属性(和/或)事件';
SLinkageCategoryName = '连接';
SLinkageCategoryDesc = '连接属性(和/或)事件';
SLocaleCategoryName = '场所';
SLocaleCategoryDesc = '场所属性(和/或)事件';
SLocalizableCategoryName = '地方化';
SLocalizableCategoryDesc = '地方化属性(和/或)事件';
SMiscellaneousCategoryName = '其他';
SMiscellaneousCategoryDesc = '其他属性(和/或)事件';
SVisualCategoryName = '可视';
SVisualCategoryDesc = '可视属性(和/或)事件';
SInputCategoryName = '输入';
SInputCategoryDesc = '输入属性(和/或)事件';

SInvalidMask = '在(%d)中''%s''是一个无效的掩码';
SInvalidFilter = '属性过滤器仅仅可以是名字,类或基本类型(%d:%d)';
SInvalidCategory = '类别必须定议它们的特有名字和描述';

sOperationNotAllowed = '当应用程序分派事件时操作不允许';

implementation

end.
 
保证可以用!在D5下运行通过!
......

public

procedure AppException(Sender: TObject; E: Exception);


......

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;

......

end;


procedure TForm1.AppException(Sender: TObject; E: Exception);
begin

if (Sender is TDbEdit) then

begin
if (Sender as TDbEdit).Name = 'DBEditName1' then
Application.MessageBox('DBEditName1输入格式错误!','错 误',MB_ICONERROR+MB_OK);
if (Sender as TDbEdit).Name = 'DBEditName2' then
Application.MessageBox('DBEditName2输入格式错误!','错 误',MB_ICONERROR+MB_OK);
......
end
else
Application.MessageBox(PChar('发生错误: '+E.Message),'错误',MB_ICONERROR+MB_OK);


End;


......

 

 
 
多谢各位的鼎立支持,无赖只有50大元,希望下次能与各位再次切磋。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部