【发布时间】:2013-06-18 02:33:21
【问题描述】:
对于 TEdit 组件,该组件是否可以通过将换行符转换为空格来处理来自 Windows 剪贴板的多行粘贴?
换句话说,如果 Windows 剪贴板上有以下数据:
Hello
world
!
...用户将光标放在 TEdit 中然后按下 CTRL+V,是否可以让 TEdit 将输入显示为:
世界你好!
【问题讨论】:
标签: delphi-xe2 delphi-7 delphi-2010 delphi
对于 TEdit 组件,该组件是否可以通过将换行符转换为空格来处理来自 Windows 剪贴板的多行粘贴?
换句话说,如果 Windows 剪贴板上有以下数据:
Hello
world
!
...用户将光标放在 TEdit 中然后按下 CTRL+V,是否可以让 TEdit 将输入显示为:
世界你好!
【问题讨论】:
标签: delphi-xe2 delphi-7 delphi-2010 delphi
您需要使用插入器类对 TEdit 进行子类化,并为 WM_PASTE 消息添加处理程序:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, adsdata, adsfunc, adstable;
type
TEdit= class(StdCtrls.TEdit)
procedure WMPaste(var Msg: TWMPaste); message WM_PASTE;
end;
type
TForm3 = class(TForm)
AdsTable1: TAdsTable;
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
uses
Clipbrd;
{ TEdit }
procedure TEdit.WMPaste(var Msg: TWMPaste);
var
TempTxt: string;
begin
TempTxt := Clipboard.AsText;
TempTxt := StringReplace(TempTxt, #13#10, #32, [rfReplaceAll]);
Text := TempTxt;
end;
end.
【讨论】:
YourEdit.WindowProc分配一个新的消息处理程序。