我用Delphi写了一个打字软件,有两个问题搞不定

stiwin 2002-02-20 12:28:53
我用Delphi写了一个打字软件,有两个问题搞不定:
1、在TEdit输入的文字和提示显示的文字不一样时我能否将打错的文字显示为特定的颜色。如:(红色)
2、我怎么得到输入的中文文字,我在TForm1.Edit1KeyPress和TForm1.EditKeyDown中不能得到正确输入的中文词组。
...全文
36 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
andyting 2002-02-20
  • 打赏
  • 举报
回复
作个判断
torble 2002-02-20
  • 打赏
  • 举报
回复
1. TEdit 不能达到你的要求,建议用 TRichEdit 或第三方控件 SynEdit 等实现文字颜色特显。

2. 中文文字是双字节,你的事件要考虑这些,还有输入法发出的键盘事件(连续的)
stiwin 2002-02-20
  • 打赏
  • 举报
回复
Tell Me
yuzhan 2002-02-20
  • 打赏
  • 举报
回复
我曾经作过一个类似的东西。如果你给我写信(yuzhan@163.com),我将把它送给你一份。
stiwin 2002-02-20
  • 打赏
  • 举报
回复
在输入英文时能正确有将打错的字的Color改为红色。但在输入中文里却不能正确有比较???请帮我看一看下面的代码:
var
Form1: TForm1;
ModifyLength:Integer;


procedure TForm1.RichEdit1Change(Sender: TObject);
var
i:Integer;
x,y:String;
begin
i:=Length(Richedit1.Text );
RichEdit1.SelStart :=ModifyLength;
RichEdit1.SelLength :=i-ModifyLength;
x:=Copy(Line1.Caption ,ModifyLength-1,i-ModifyLength);
y:=RichEdit1.SelText;
if x<>y then //在这里为什么处理中文时没有更改呢???
RichEdit1.SelAttributes.Color:=Clred;
RichEdit1.SelStart :=i; //取消当前的选择不知用什么就用这一句代替了
RichEDit1.SelAttributes.Color :=Cllime;
end;

procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ModifyLength:=Length(RichEdit1.Text ); //应取得字符的开始位置
if Length(Line1.Caption)<=Length(RichEdit1.Text)-2 then
RichEdit2.SetFocus;
if (key=8) then
key:=0;
end;

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧