fastreport中的对汉字的支持

fastreport4.79的脚本编辑器:frxSyntaxMemo,fs_Syntaxmemo

第一个是用在TFrxAdoquery的sql编辑器中的,第二个是个独立的控件,用来支持几个常用脚本的语法加亮

存在的问题是:可以删除半个汉字,可以将光标移动至汉字中间

我现在的项目中,多处sql语句中用到汉字(select col1 as 第一列....),所以自己动手改了一下fastreport源码

原理是使用bytetype函数,判断光标位置的字符是否是汉字,bytetype的帮助如下:

Indicates whether a byte in a string is a single byte character, the first byte of a double byte character, or the second byte of a double byte character.

返回值:type TMbcsByteType = (mbSingleByte, mbLeadByte, mbTrailByte);

                                              单字节                汉字首             汉字尾

 

处理源码中的几处事件就可以使这个编辑器支持汉字了

例如:

procedure TfsSyntaxMemo.DoLeft; var s: string; begin Dec(FPos.X); s := LineAt(FPos.Y - 1); if bytetype(s, FPos.X) = mbTrailByte then begin dec(Fpos.X); end; if FPos.X < 1 then FPos.X := 1; SetPos(FPos.X, FPos.Y); end;

 

下载:fr4.79_cn_path.rar

 

 

原文:http://www.cnblogs.com/cnanyi/archive/2008/11/16/1334621.html

你可能感兴趣的:(sql,String,脚本,character,byte)