当 Memo内容不为空时,光标在Memo当前行的最后,如何使在按下回车时并出现一个ShowMessage('1111')提示后,Memo的光标不换行,始终停在最后一个字符后,我用 Edit1.SetFocus;
Edit1.SelStart := length(Edit1.Text)-1; 方法,第一次还可以,可到第二次在光标后按回车提示后,光标就换行了,怎么让光标不换行,始终停在当前行的最后处。
解决方案 »
- delphi余数判断
- 请问现在用Delphi有什么方法可以对并口进行操作?
- 关于Reset(lc_file)运行错误问题
- 请教Delphi2005安装
- 如何利用 TApplicationEvents 来捕捉线程中的 Exception ?
- 关于数据类型转换的
- 请教:怎样汇总?
- 急需解决记录与字段间的转换。请问在SQL Server中有没有类似于Access中的命令TransForm .....Pivot。
- 我的程序击活调用了别的程序,请问怎样让这个程序维持焦点呢?(我想发送一些模拟键盘命令)
- 如何根据下列条件获取外部应用程序的句柄
- API WriteFile 问题
- 有免费用于Delphi2010的可以快速导出Excel文件的控件吗?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
OldProc: Pointer;implementation{$R *.dfm}function MyProc(h: HWND; msg, wparam, lparam: LongInt): LongInt; stdcall
begin
if (Msg = WM_KEYDOWN) or (msg = WM_CHAR) then
begin
if (wparam = 13) then
begin
ShowMessage('KeyDown');
Form1.Memo1.SetFocus;
Form1.Memo1.SelStart := length(Form1.Memo1.Text)-1;
end;
end
else
Result := CallWindowProc(OldProc, h, msg,wparam,lparam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc := Pointer(SetWindowLong(Memo1.Handle,GWL_WNDPROC,Integer(@myproc)));
end;end.
是原来的 + 回车
我那代码只是拦截了按下回车不往下边执行了
if key = #13 then begin
...
...
showmessage('111');
Key := #0; //这就是删除掉回车
end;