Subject:
代码输入助手之括号/引号自动完成之简单实现
[Print This Page]
Author:
xiong2001
Time:
2005-9-30 17:37
Subject:
代码输入助手之括号/引号自动完成之简单实现
环境:windows2000sp4 + delphi7.1
CnWizards源码版本:V0.7.8.143 stable
在CnInputHelper.pas中加入如下代码(代码前有+标记的为功能实现代码)
function TCnInputHelper.HandleKeyDown(var Msg: TMsg): Boolean;
+const
+ VK_9:Integer=$39; // 9按键
+ VK_OEM_7:Integer=$DE; // '按键
var
Shift: TShiftState;
ScanCode: Word;
Key: Word;
Col, Row:Integer;
begin
......
......
// 按下 Alt 或 Ctrl 时关闭
if Shift * [ssAlt, ssCtrl] <> [] then
begin
HideAndClearList;
Exit;
end;
// Shift 键不需要处理
if Key = VK_SHIFT then
Exit;
+ // 括号自动完成
+ if Key = VK_9 then
+ if Shift = [ssShift] then
+ begin
+ CnOtaGetCurSourcePos(Col,Row);
+ CnOtaInsertTextToCurSource(')');
+ CnOtaSetCurSourcePos(Col, Row);
+ end;
+ // 单引号自动完成
+ if Key = VK_OEM_7 then
+ begin
+ CnOtaGetCurSourcePos(Col,Row);
+ CnOtaInsertTextToCurSource(chr($27));
+ CnOtaSetCurSourcePos(Col, Row);
+ end;
......
......
end;
Author:
zjy
Time:
2005-9-30 21:12
Subject:
厉害!
看来 xiong2001 对这部分代码比较熟悉了:)
不过这段代码可能有些小问题,不是所有的键盘布局 ( 键都在 9 上面的,有些在 8 上面。同样,引号也有类似的问题。
另外,上面的代码是基于上一次发布的版本修改的。当前的开发版本中,编辑器控件按键 Hook 功能已经单独提到公共单元中了,编辑器扩展中新加了一个单元 Source\SrcEditorEnhance\CnSrcEditorKey.pas 专门负责处理按键扩展,如自动缩进、Home扩展等。括号自动完成的功能也将放到新的单元中。xiong2001 有兴趣也可以从 CVS 中下载最新的代码来看看。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0