Die Windows-Zwischenablage stellt den Container für Text oder Grafiken dar, die aus oder in eine Anwendung ausgeschnitten, kopiert oder eingefügt werden. In diesem Artikel erfahren Sie, wie Sie mit dem TClipboard-Objekt Funktionen zum Ausschneiden, Kopieren und Einfügen in Ihrer Delphi-Anwendung implementieren.
Zwischenablage im Allgemeinen
Wie Sie wahrscheinlich wissen, kann die Zwischenablage nur ein Stück derselben Art von Daten zum gleichzeitigen Ausschneiden, Kopieren und Einfügen enthalten. Wenn wir neue Informationen im gleichen Format an die Zwischenablage senden, löschen wir das, was vorher da war, aber das Der Inhalt der Zwischenablage bleibt auch nach dem Einfügen in einen anderen Programm in der Zwischenablage erhalten.
TClipboard
Um die Windows-Zwischenablage in unseren Anwendungen verwenden zu können, müssen wir die hinzufügen ClipBrd-Einheit auf die Verwendungsklausel des Projekts, außer wenn wir das Ausschneiden, Kopieren und Einfügen auf die Komponenten beschränken, die bereits über eine integrierte Unterstützung für Zwischenablage-Methoden verfügen. Diese Komponenten sind TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage und TDBMemo.
Die ClipBrd-Einheit repräsentiert automatisch ein TClipboard-Objekt namens Clipboard. Wir werden das benutzen CutToClipboard, In die Zwischenablage kopieren, PasteFromClipboard, klar und HasFormat Methoden für den Umgang mit Zwischenablageoperationen und Text- / Grafikmanipulationen.
Senden und Abrufen von Text
Um Text an die Zwischenablage zu senden, wird die AsText-Eigenschaft des Zwischenablageobjekts verwendet. Wenn wir zum Beispiel die senden wollen Zeichenfolge Informationen, die in der Variablen SomeStringData in der Zwischenablage enthalten sind (Löschen des vorhandenen Textes), verwenden den folgenden Code:
Verwendet ClipBrd; ...
Zwischenablage. AsText: = SomeStringData_Variable;
Um die Textinformationen aus der Zwischenablage abzurufen, verwenden wir
Verwendet ClipBrd; ...
SomeStringData_Variable: = Zwischenablage. AsText;
Hinweis: Wenn wir nur den Text aus der Komponente "Bearbeiten" in die Zwischenablage kopieren möchten, müssen wir die ClipBrd-Einheit nicht in die using-Klausel aufnehmen. Die CopyToClipboard-Methode von TEdit kopiert den ausgewählten Text im Bearbeitungssteuerelement im Format CF_TEXT in die Zwischenablage.
Verfahren TForm1.Button2Click (Absender: TObject); Start// In der folgenden Zeile wird // ALLER Text im Bearbeitungssteuerelement {Edit1.SelectAll;} ausgewählt. Edit1.CopyToClipboard; Ende;
Zwischenablage Bilder
Um grafische Bilder aus der Zwischenablage abzurufen, muss Delphi wissen, welcher Bildtyp dort gespeichert ist. Um Bilder in die Zwischenablage zu übertragen, muss die Anwendung der Zwischenablage mitteilen, welche Art von Grafiken gesendet wird. Einige der möglichen Werte des Format-Parameters folgen; Es gibt viele weitere Zwischenablageformate, die von Windows bereitgestellt werden.
- CF_TEXT - Text mit jeder Zeile, die mit a endet CR-LF Kombination.
- CF_BITMAP - Eine Windows-Bitmap-Grafik.
- CF_METAFILEPICT - Eine Windows-Metadatei-Grafik.
- CF_PICTURE - Ein Objekt vom Typ TPicture.
- CF_OBJECT - Jedes persistente Objekt.
Die HasFormat-Methode gibt True zurück, wenn das Bild in der Zwischenablage das richtige Format hat:
wenn Zwischenablage. HasFormat (CF_METAFILEPICT) dann ShowMessage ('Zwischenablage hat Metadatei');
Verwenden Sie die Zuweisungsmethode, um ein Bild in die Zwischenablage zu senden (zuzuweisen). Der folgende Code kopiert beispielsweise die Bitmap von einem Bitmap-Objekt mit dem Namen MyBitmap in die Zwischenablage:
Zwischenablage. Assign (MyBitmap);
Im Allgemeinen ist MyBitmap ein Objekt vom Typ TGraphics, TBitmap, TMetafile oder TPicture.
Um ein Bild aus der Zwischenablage abzurufen, müssen Sie: das Format des aktuellen Inhalts der Zwischenablage überprüfen und die Zuweisungsmethode des Zielobjekts verwenden:
{Platzieren Sie eine Schaltfläche und ein Bildsteuerelement auf Formular1} {Bevor Sie diesen Code ausführen, drücken Sie die Tastenkombination Alt-PrintScreen}Verwendet clipbrd;... Verfahren TForm1.Button1Click (Absender: TObject); Startwenn Zwischenablage. HasFormat (CF_BITMAP) dann Image1.Picture. Bitmap. Zuweisen (Zwischenablage); Ende;
Mehr Kontrolle über die Zwischenablage
In der Zwischenablage werden Informationen in mehreren Formaten gespeichert, sodass wir Daten zwischen Anwendungen in verschiedenen Formaten übertragen können. Beim Lesen von Informationen aus der Zwischenablage mit Delphis TClipboard-Klasse sind wir auf Standardformate der Zwischenablage beschränkt: Text, Bilder und Metadateien.
Angenommen, Sie arbeiten zwischen zwei verschiedenen Delphi-Anwendungen. Wie würden Sie das benutzerdefinierte Format der Zwischenablage definieren, um Daten zwischen diesen beiden Programmen zu senden und zu empfangen? Nehmen wir zum Zweck der Erkundung an, Sie versuchen, eine Einfügung zu codieren Menüpunkt. Sie möchten, dass es deaktiviert wird, wenn sich kein Text in der Zwischenablage befindet (als Instanz).
Da der gesamte Prozess mit der Zwischenablage hinter den Kulissen stattfindet, gibt es keine Methode der TClipboard-Klasse, die Sie darüber informiert, wenn Änderungen am Inhalt der Zwischenablage vorgenommen wurden. Die Idee ist, das Benachrichtigungssystem für die Zwischenablage einzubinden, damit Sie auf Ereignisse zugreifen und darauf reagieren können, wenn sich die Zwischenablage ändert.
Um mehr Flexibilität und Funktionalität zu genießen, ist es erforderlich, Benachrichtigungen über Änderungen in der Zwischenablage und benutzerdefinierte Zwischenablageformate zu bearbeiten und die Zwischenablage anzuhören.