代码输入助手之括号/引号自动完成之简单实现
环境: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;
|