Die Windows-Zwischenablage stellt den Container für Text oder Grafiken dar, die aus einer Anwendung ausgeschnitten, kopiert oder in eine Anwendung eingefügt werden. In diesem Artikel erfahren Sie, wie Sie mithilfe des TClipboard-Objekts Funktionen zum Ausschneiden, Kopieren und Einfügen in Ihrer Delphi-Anwendung implementieren.
Wie Sie wahrscheinlich wissen, kann die Zwischenablage nur einen Teil der gleichen Art von Daten zum gleichzeitigen Ausschneiden, Kopieren und Einfügen enthalten. Wenn wir neue Informationen im gleichen Format in die Zwischenablage senden, löschen wir die vorherigen Informationen, aber der Inhalt der Zwischenablage bleibt in der Zwischenablage erhalten, auch nachdem wir ihn in ein anderes Programm eingefügt haben.
Um die Windows-Zwischenablage in unseren Anwendungen verwenden zu können, müssen wir die hinzufügen ClipBrd-Einheit Dies gilt nicht für die uses-Klausel des Projekts, es sei denn, wir beschränken das Ausschneiden, Kopieren und Einfügen auf Komponenten, die bereits über eine integrierte Unterstützung für Clipboard-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 verwenden CutToClipboard, In die Zwischenablage kopieren, PasteFromClipboard, klar und HasFormat Methoden zum Umgang mit Operationen in der Zwischenablage und zur Bearbeitung von Texten und Grafiken.
Um Text in die Zwischenablage zu senden, wird die AsText-Eigenschaft des Clipboard-Objekts verwendet. Wenn wir beispielsweise die in der Variablen SomeStringData enthaltenen Zeichenfolgeninformationen an die Zwischenablage senden möchten (wobei der vorhandene Text gelöscht wird), verwenden wir den folgenden Code:
Verwendet ClipBrd; … Clipboard.AsText: = SomeStringData_Variable;
Um die Textinformationen aus der Zwischenablage abzurufen, verwenden wir
Verwendet ClipBrd; … SomeStringData_Variable: = Clipboard.AsText;
Hinweis: Wenn Sie nur den Text aus der Edit-Komponente in die Zwischenablage kopieren möchten, müssen Sie die ClipBrd-Einheit nicht in die uses-Klausel aufnehmen. Die CopyToClipboard-Methode von TEdit kopiert den ausgewählten Text im Bearbeitungssteuerelement im CF_TEXT-Format in die Zwischenablage.
Verfahren TForm1.Button2Click (Absender: TObject); Start // In der folgenden Zeile wird // der gesamte Text im Bearbeitungssteuerelement Edit1.SelectAll; ausgewählt. Edit1.CopyToClipboard; Ende;
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 Grafik sie sendet. Es folgen einige der möglichen Werte des Format-Parameters. Es gibt viele weitere Zwischenablageformate, die von Windows bereitgestellt werden.
Die HasFormat-Methode gibt True zurück, wenn das Bild in der Zwischenablage das richtige Format hat:
wenn Clipboard.HasFormat (CF_METAFILEPICT) dann ShowMessage ('Zwischenablage hat Metadatei');
Verwenden Sie die Assign-Methode, um ein Bild in die Zwischenablage zu übertragen (zuzuweisen). Der folgende Code kopiert beispielsweise die Bitmap aus einem Bitmap-Objekt mit dem Namen MyBitmap in die Zwischenablage:
Clipboard.Assign (MyBitmap);
Im Allgemeinen ist MyBitmap ein Objekt vom Typ TGraphics, TBitmap, TMetafile oder TPicture.
Um ein Bild aus der Zwischenablage abzurufen, müssen wir: das Format des aktuellen Inhalts der Zwischenablage überprüfen und die Assign-Methode des Zielobjekts verwenden:
Platzieren Sie eine Schaltfläche und ein Bildsteuerelement auf form1 Bevor Sie diesen Code ausführen, drücken Sie die Tastenkombination Alt-PrintScreen Verwendet clipbrd;… Verfahren TForm1.Button1Click (Absender: TObject); Start wenn Clipboard.HasFormat (CF_BITMAP) dann Image1.Picture.Bitmap.Assign (Zwischenablage); Ende;
In der Zwischenablage werden Informationen in mehreren Formaten gespeichert, sodass wir Daten mit verschiedenen Formaten zwischen Anwendungen übertragen können. Beim Lesen von Informationen aus der Zwischenablage mit der TClipboard-Klasse von Delphi sind wir auf die Standardformate der Zwischenablage beschränkt: Text, Bilder und Metadateien.
Angenommen, Sie arbeiten zwischen zwei verschiedenen Delphi-Anwendungen. Wie würden Sie ein benutzerdefiniertes Format für die Zwischenablage definieren, um Daten zwischen diesen beiden Programmen zu senden und zu empfangen? Nehmen wir zum Zweck der Untersuchung an, Sie versuchen, ein Menüelement Einfügen zu codieren. Sie möchten, dass es deaktiviert wird, wenn sich kein Text in der Zwischenablage befindet (als Instanz).
Da der gesamte Vorgang mit der Zwischenablage hinter den Kulissen stattfindet, gibt es keine Methode der TClipboard-Klasse, die Sie benachrichtigt, wenn Änderungen am Inhalt der Zwischenablage vorgenommen wurden. Die Idee ist, das Benachrichtigungssystem der 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 erhalten, müssen Sie sich mit Benachrichtigungen über Änderungen in der Zwischenablage und benutzerdefinierten Formaten für die Zwischenablage befassen und die Zwischenablage anhören.