delphi中的基本剪贴板操作(剪切/复制/粘贴)

Windows剪贴板表示从应用程序剪切、复制或粘贴到应用程序的任何文本或图形的容器。本文将向您展示如何使用TClipboard对象在Delphi应用程序中实现剪切复制粘贴功能。...

Windows剪贴板表示从应用程序剪切、复制或粘贴到应用程序的任何文本或图形的容器。本文将向您展示如何使用TClipboard对象在Delphi应用程序中实现剪切复制粘贴功能。

Programming Clipboard in Delphi

一般剪贴板

您可能知道,剪贴板一次只能保存一段相同类型的数据进行剪切、复制和粘贴。如果我们以相同的格式将新信息发送到剪贴板,我们将删除以前存在的内容,但即使我们将这些内容粘贴到另一个程序中,剪贴板的内容仍保留在剪贴板中。

tclipboard

为了在我们的应用程序中使用Windows剪贴板,我们必须将ClipBrd单元添加到项目的uses子句中,除非我们限制剪切、复制和粘贴到已经具有内置剪贴板方法支持的组件。这些组件是TEdit、TMemo、TOLEContainer、TDDEServerItem、TDBEdit、TDBImage和TDBMemo。

ClipBrd单元自动表示名为剪贴板的TClipboard对象。我们将使用CutToClipboard、CopyToClipboard、PasteFromClipboard、Clear和HasFormat方法来处理剪贴板操作和文本/图形操作。

发送和检索文本

为了向剪贴板发送一些文本,使用剪贴板对象的AsText属性。例如,如果我们想将变量SomeStringData中包含的字符串信息发送到剪贴板(清除其中的任何文本),我们将使用以下代码:

uses ClipBrd; ... Clipboard.AsText := SomeStringData_Variable;

要从剪贴板检索文本信息,我们将使用

uses ClipBrd; ... SomeStringData_Variable := Clipboard.AsText;

注意:如果我们只想将文本从(比如说)编辑组件复制到剪贴板,我们不必将ClipBrd单元包含到uses子句中。TEdit的CopyToClipboard方法将编辑控件中选定的文本以CF_文本格式复制到剪贴板。

procedure TForm1.Button2Click(Sender: TObject) ; begin //the following line will select //ALL the text in the edit control {Edit1.SelectAll;} Edit1.CopyToClipboard; end;

剪贴板图像

要从剪贴板中检索图形图像,Delphi必须知道存储在剪贴板中的图像类型。同样,要将图像传输到剪贴板,应用程序必须告诉剪贴板它正在发送什么类型的图形。下面是Format参数的一些可能值;Windows提供了更多的剪贴板格式。

  • CF_TEXT-每行以CR-LF组合结尾的文本。
  • CF_位图-Windows位图图形。
  • CF_METAFILEPICT-一种Windows图元文件图形。
  • CF_PICTURE-类型为TPicture的对象。
  • CF_对象-任何持久对象。

如果剪贴板中的图像具有正确的格式,则HasFormat方法返回True:

if Clipboard.HasFormat(CF_METAFILEPICT) then ShowMessage('Clipboard has metafile') ;

使用Assign方法将图像发送(分配)到剪贴板。例如,以下代码将位图从名为MyBitmap的位图对象复制到剪贴板:

Clipboard.Assign(MyBitmap) ;

通常,MyBitmap是TGraphics、TBitmap、TMetafile或TPicture类型的对象。

要从剪贴板检索图像,我们必须:验证剪贴板当前内容的格式,并使用目标对象的Assign方法:

{place one button and one image control on form1} {Prior to executing this code press Alt-PrintScreen key combination} uses clipbrd; ... procedure TForm1.Button1Click(Sender: TObject) ; begin if Clipboard.HasFormat(CF_BITMAP) then Image1.Picture.Bitmap.Assign(Clipboard) ; end;

更多剪贴板控件

剪贴板以多种格式存储信息,因此我们可以使用不同的格式在应用程序之间传输数据。当使用Delphi的TClipboard类从剪贴板读取信息时,我们仅限于标准的剪贴板格式:文本、图片和图元文件。

假设您在两个不同的Delphi应用程序之间工作;为了在这两个程序之间发送和接收数据,您将如何定义自定义剪贴板格式?为了便于探索,假设您正在尝试编写粘贴菜单项的代码。当剪贴板中没有文本时(作为实例),您希望将其禁用。

由于剪贴板的整个过程都是在幕后进行的,因此没有TClipboard类的方法可以在剪贴板的内容发生某些更改时通知您。其想法是挂接剪贴板通知系统,以便在剪贴板更改时能够访问和响应事件。

为了享受更多的灵活性和功能性,处理剪贴板更改通知和自定义剪贴板格式(侦听剪贴板)是必要的。

  • 发表于 2021-09-15 03:52
  • 阅读 ( 275 )
  • 分类:IT

你可能感兴趣的文章

如何复制和粘贴在iphone上

...择要复制的文本后,轻按“复制”。复制的文本存储在“剪贴板”上,随时可以粘贴到任何你想要的地方。此剪贴板在后台工作,不可见。值得注意的是,它只能在内存中存储一个项。如果复制其他内容,前面的文本将被删除。...

  • 发布于 2021-03-18 10:03
  • 阅读 ( 492 )

如何在mac上复制和粘贴

...目后,单击“编辑”>“复制”将所选内容复制到剪贴板。 ...

  • 发布于 2021-03-20 10:54
  • 阅读 ( 236 )

如何在android上管理剪贴板

...制第二个项目,则第一个复制的文本将被删除。Android的剪贴板一次只能保存一位文本。 ...

  • 发布于 2021-03-25 01:14
  • 阅读 ( 199 )

如何在任何地方复制和粘贴

... 首先,复制和粘贴使用操作系统中不可见的部分,即剪贴板。这是一个很小的存储空间,一次可以容纳一个项目——它可以处理文本、图像甚至文件。 ...

  • 发布于 2021-03-30 16:38
  • 阅读 ( 263 )

如何在windows pc上复制、剪切和粘贴

...您将要使用的所有应用程序。他们是这样工作的。 了解剪贴板 复制或剪切某些内容(如文本块、图像或链接)时,Windows会将数据临时存储在称为剪贴板的特殊内存位置。把它想象成一支临时的笔。粘贴复制的信息时,Windows将...

  • 发布于 2021-04-02 04:33
  • 阅读 ( 222 )

如何在linux的bashshell中复制和粘贴文本

...示终端窗口中的文本并按Ctrl+Shift+C,则会将该文本复制到剪贴板缓冲区中。 Ctrl+Shift+C 可以使用Ctrl+Shift+V将复制的文本粘贴到同一终端窗口或另一终端窗口中。 Ctrl+Shift+V 也可以粘贴到图形应用程序(如gedit)中。但请注意,当...

  • 发布于 2021-04-03 03:36
  • 阅读 ( 241 )

如何在chromebook上复制和粘贴

...键单击上下文菜单,而是按Ctrl+C将突出显示的文本复制到剪贴板。 提示:如果要在将文档复制到剪贴板时完全删除文档中的文本,请单击上下文菜单中的“剪切”或按Ctrl+X。 如何粘贴文本 现在您已经将文本复制到剪贴板,打开...

  • 发布于 2021-04-03 05:12
  • 阅读 ( 268 )

如何在microsoft word中剪切、复制和粘贴

...那样,microsoftword提供了更多的选项。有一个内置的Office剪贴板,它非常强大,可以选择粘贴内容的格式,等等。下面是它的工作原理。 按所需方式粘贴文本 使用Ctrl+V粘贴文本时,Word默认同时粘贴文本和应用于该文本的任何格...

  • 发布于 2021-04-04 23:45
  • 阅读 ( 181 )

使用windows10的新截图工具:剪辑和注释

...en键将整个屏幕(或Alt+Print Screen仅用于活动窗口)复制到剪贴板,以便将其粘贴到某个位置,或者启动剪报工具,用它来剪报部分屏幕。 在2018年10月的更新中,另一个键盘快捷键打开了一个新的屏幕截图工具,可以将部分屏幕...

  • 发布于 2021-04-06 08:02
  • 阅读 ( 178 )

如何使用microsoft office的内置剪贴板

您的计算机的“剪贴板”是您剪切或复制的内容临时存储的地方。微软Office有自己的剪贴板,但是,它更强大。 Windows剪贴板仅存储您复制的最后一个项目。但是,Office剪贴板最多可存储来自Office文档和其他程序的24个文本和图...

  • 发布于 2021-04-09 06:41
  • 阅读 ( 177 )
akwlif284
akwlif284

0 篇文章

相关推荐