编辑框

处理gbk特殊字符
This commit is contained in:
tslediter 2024-04-29 10:44:10 +08:00
parent 0de78a034a
commit d014530500
4 changed files with 31 additions and 2 deletions

View File

@ -2205,8 +2205,6 @@ begin
len1 := length(names); len1 := length(names);
if(len1>length(names union2 array()))then raise functionname()+"结构体变量名重复"; if(len1>length(names union2 array()))then raise functionname()+"结构体变量名重复";
ctypebytes := static get_c_typesize();;//getctypesize(); ctypebytes := static get_c_typesize();;//getctypesize();
ctypebytes["user*"]:= ctypebytes["intptr"];
ctypenames := mrows(ctypebytes,1);
itemslen := calcalimsizeA(data,ctypebytes);//对其长度 itemslen := calcalimsizeA(data,ctypebytes);//对其长度
for i,vi in data do for i,vi in data do
begin begin
@ -2383,6 +2381,7 @@ begin
r["float"] := 4; r["float"] := 4;
r["FLOAT"] := 4; r["FLOAT"] := 4;
r["pointer"] := psize; r["pointer"] := psize;
r["user*"] := psize;
r["INT64"] := 8; r["INT64"] := 8;
r["int64"] := 8; r["int64"] := 8;
//echo "\r\n>>>>gettype"; //echo "\r\n>>>>gettype";

View File

@ -1131,6 +1131,20 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
if c<32 and not(c in array(9))then return; if c<32 and not(c in array(9))then return;
cc := e.char; cc := e.char;
//if e.CharCode=VK_TAB then return inherited; //if e.CharCode=VK_TAB then return inherited;
/////////////////处理特殊的gbk编码的字符比如:弢//20240429////////////////////////////
if FInPutCache then
begin
cc := FInPutCache+cc;
FInPutCache:=0;
end else
if (c .& 0x80)<> 0 then
begin
FInPutCache := cc;
return ;
end
CharInput(cc);
return inherited;
/////////////gbk汉字编码可能存在不全面/////////////////////////////////////
if(c .& 0x80)<> 0 then if(c .& 0x80)<> 0 then
begin begin
if FInPutCache then if FInPutCache then
@ -1149,6 +1163,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
CharInput(cc); CharInput(cc);
end end
inherited; inherited;
//////////////////////////////////////////////////
end end
function InsertChars(s);virtual;//µ±Ç°Î»ÖòåÈë×Ö·û function InsertChars(s);virtual;//µ±Ç°Î»ÖòåÈë×Ö·û
begin begin

View File

@ -1543,6 +1543,21 @@ type teditable=class(TSLUIBASE) //
end end
if c<32 then return; if c<32 then return;
if FReadOnly then return; if FReadOnly then return;
//////////////////////////
cc := e.char;
if FHafChar then
begin
cc := FHafChar+cc;
FHafChar := 0;
end else
if c .& 0x80 then
begin
FHafChar := cc;
return ;
end
InsertChar(cc);
return ;
/////////////////////////////////
if c .& 0x80 then if c .& 0x80 then
begin begin
if FHafChar then if FHafChar then

Binary file not shown.