双击一个表单上的 TStaticText 会将该 TStaticText 的标题复制到剪贴板中,不需要双击事件。
重现步骤:
- 使用 Win64 和 Delphi XE2 update 4。 - 创建一个 VCL 表单应用程序。 - 在表单上放置一个 TEdit。 - 在表单上放置一个 TStaticText。将标题更改为 "TStaticText1Caption"。 - 在表单上再放置一个 TStaticText。将标题更改为 "TStaticText2Caption"。 - 运行程序(F9)。 - 在 TEdit 中输入一些文本。选择全部并通过 CTRL+C 复制它。 - 删除 TEdit 中的文本。粘贴以验证文本是否与您复制的文本相同。 - 删除 TEdit 中的文本。 - 双击任一 TStaticText。 - 将文本粘贴到 TEdit 中。注意它不是原始复制的文本,而是 TStaticText 的标题。
我已经向 Embarcadero 提交了错误报告。
我尝试将双击事件分配给 TStaticTexts。即使执行了双击事件,它仍会将标题复制到剪贴板中。
重现步骤:
- 使用 Win64 和 Delphi XE2 update 4。 - 创建一个 VCL 表单应用程序。 - 在表单上放置一个 TEdit。 - 在表单上放置一个 TStaticText。将标题更改为 "TStaticText1Caption"。 - 在表单上再放置一个 TStaticText。将标题更改为 "TStaticText2Caption"。 - 运行程序(F9)。 - 在 TEdit 中输入一些文本。选择全部并通过 CTRL+C 复制它。 - 删除 TEdit 中的文本。粘贴以验证文本是否与您复制的文本相同。 - 删除 TEdit 中的文本。 - 双击任一 TStaticText。 - 将文本粘贴到 TEdit 中。注意它不是原始复制的文本,而是 TStaticText 的标题。
我已经向 Embarcadero 提交了错误报告。
我尝试将双击事件分配给 TStaticTexts。即使执行了双击事件,它仍会将标题复制到剪贴板中。
procedure TForm1.StaticText1DblClick(Sender: TObject);
begin
Edit1.Text := 'Hello';
end;
procedure TForm1.StaticText2DblClick(Sender: TObject);
begin
Edit1.Text := 'World';
end;
我尝试了TLabel和其他VCL控件,但都没有出现这种情况。
我们在表单上有很多TStaticText用于视觉设计目的,改为TLabel不是一个选项。
有人有什么想法可以防止这种情况发生吗?
SS_NOTIFY
静态控件上的双击复制功能,则必须对该静态控件进行子类化并自己处理点击事件。” - Remy Lebeau