dbgrid 中如何攔截中文字? |
缺席
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我在 onKeyPress 中如此撰寫, 可以達到部份中文填入 tedit的要求, 伹有一半的中文字仍無法正確的顯示出來, 如上, 紅....
不知有何解決方法?
private mword: string; public .... ... procedure TForm1.dbGrid1Press(Sender: TObject; var Key: Char); var mlen: integer; begin if length(mword)>2 then setlength(mword,0); try mword:= mword Key; if IsDBCSLeadByte(Byte(mword[2])) then begin Edit1.Text:= Edit1.Text mword; setlength(mword,0); end else if (Key in ['0'..'9']) or (Key in ['a'..'z']) or (Key in ['A'..'Z']) or (Key in ['`','~','!','@','#','$','%','^','&','*','(',')','-','_', ' ','=','|','\',',','<','.','>','/','?',';',':','[','{', ']','}']) or (ord(Key)=32) or (ord(Key)=39) or (ord(Key)=34) then begin Edit1.Text:= Edit1.Text Key; setlength(mword,0); end else if (ord(Key)=8) and (length(Edit1.Text)>0) then // VK_BACK begin mlen:= length(Edit1.Text); if IsDBCSLeadByte(Byte(Edit1.Text[mlen])) then Edit1.Text:= copy(Edit1.Text,1,mlen-2) else Edit1.Text:= copy(Edit1.Text,1,mlen-1); setlength(mword,0); end; except setlength(mword,0); end; end;發表人 - P.D. 於 2005/09/26 02:14:37 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |