Computerwissenschaften

Grundlagen der Zwischenablage (Ausschneiden / Kopieren / Einfügen) – Delphi-Code

Die Windows-Zwischenablage stellt den Container für alle Texte 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 die zuvor vorhandenen Informationen, aber der Inhalt der Zwischenablage bleibt auch nach dem Einfügen dieser Inhalte in ein anderes Programm in der Zwischenablage erhalten.

 

TClipboard

Um die Windows-Zwischenablage in unseren Anwendungen verwenden zu können, müssen wir die ClipBrd-Einheit zur Verwendungsklausel des Projekts hinzufügen , es sei denn, wir beschränken das Ausschneiden, Kopieren und Einfügen auf die Komponenten, 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 die Methoden CutToClipboard , CopyToClipboard , PasteFromClipboard , Clear und HasFormat verwenden, um Zwischenablageoperationen und Text- / Grafikmanipulationen zu verarbeiten.

 

Senden und Abrufen von Text

Um Text an die Zwischenablage zu senden, wird die AsText-Eigenschaft des Zwischenablageobjekts verwendet. Wenn wir wollen, zum Beispiel, die senden Zeichenfolge Informationen in der Variablen SomeStringData in die Zwischenablage enthalten (auszulöschen , was Text war), werden wir den folgenden Code verwenden:

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

Um die Textinformationen aus der Zwischenablage abzurufen, verwenden wir

 uses ClipBrd;
...
SomeStringData_Variable := Clipboard.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.

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

 

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, bei dem jede Zeile mit einer CR-LF- Kombination endet .
  • 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:

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

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:

 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 Sie: das Format des aktuellen Inhalts der Zwischenablage überprüfen und die Zuweisungsmethode des Zielobjekts verwenden:

 {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; 

 

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, einen Menüpunkt Einfügen zu codieren . 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.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.