菜鸟问一句简单的代码,在richedit1控件里使用ctrl+回车的时候出现的问题!!! ( 积分: 50 )

  • 主题发起人 主题发起人 wanglong3
  • 开始时间 开始时间
W

wanglong3

Unregistered / Unconfirmed
GUEST, unregistred user!
我想学qq那样,在richedit1里输入写字后按ctrl+回车就可以清空richedit1里的内容,代码如下,可是做了才发现,按了ctrl+回车后,内容是清空了,但是却换到下一行了。

procedure TForm1.richedit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 13) and (ssctrl in shift) then
begin
richedit1.Text := '';
end;
end;
哪位高手能让这段代码能清空内容,又能使光标不跳到下一行呢??
 
我想学qq那样,在richedit1里输入写字后按ctrl+回车就可以清空richedit1里的内容,代码如下,可是做了才发现,按了ctrl+回车后,内容是清空了,但是却换到下一行了。

procedure TForm1.richedit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 13) and (ssctrl in shift) then
begin
richedit1.Text := '';
end;
end;
哪位高手能让这段代码能清空内容,又能使光标不跳到下一行呢??
 
好象是不行,因为你是 ctrl+enter,系统先执行里面的语句后,再执行了 enter
 
设置一个全局变量 FClear: Boolean;
初始化为 FClear := FALSE;
KeyDown事件
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 13) and (ssctrl in shift) then
begin
FClear := TRUE;
richedit1.Clear;
end;
end;
KeyPress事件
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if FClear then
begin
key := #0;
FClear := FALSE;
end;
end;
 
用ActionList,添一个Crtl+Enter快截键,然后在这个事件里清空文本
 
procedure TForm1.richedit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 13) and (ssctrl in shift) then
begin
richedit1.Text := '';
Key := 0; //加上这句就OK了
end;
end;
 
你的代码是对的,只不过应该写到keyup事件内,不应该写到keydown事件里。
 
后退
顶部