Dasar-Dasar Clipboard (Potong / Salin / Tempel)

Windows Clipboard mewakili wadah untuk teks atau gambar apa pun yang dipotong, disalin, atau ditempel dari atau ke suatu aplikasi. Artikel ini akan menunjukkan kepada Anda bagaimana menggunakan objek TClipboard untuk mengimplementasikan fitur cut-copy-paste di aplikasi Delphi Anda.

Papan klip secara umum

Seperti yang mungkin Anda ketahui, Clipboard hanya dapat menampung satu bagian dari jenis data yang sama untuk memotong, menyalin, dan menempel sekaligus. Jika kami mengirim informasi baru dalam format yang sama ke Clipboard, kami menghapus apa yang ada sebelumnya, tetapi konten Clipboard tetap dengan Clipboard bahkan setelah kami menempelkan konten tersebut ke program lain.

TClipboard

Untuk menggunakan Clipboard Windows di aplikasi kita, kita harus menambahkan Unit ClipBrd untuk klausa penggunaan proyek, kecuali ketika kami membatasi pemotongan, penyalinan, dan menempel pada komponen yang sudah memiliki dukungan bawaan untuk metode Clipboard. Komponen-komponen itu adalah TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage dan TDBMemo.

instagram viewer

Unit ClipBrd secara otomatis mewakili objek TClipboard yang disebut Clipboard. Kami akan menggunakan CutToClipboard, Menyalin ke clipboard, PasteFromClipboard, Bersih dan HasFormat metode untuk berurusan dengan operasi Clipboard dan manipulasi teks / grafik.

Kirim dan Ambil Teks

Untuk mengirim beberapa teks ke Clipboard, properti AsText dari objek Clipboard digunakan. Jika kita ingin, misalnya, mengirim tali informasi yang terkandung dalam variabel SomeStringData ke Clipboard (menghapus teks apa pun yang ada di sana), kami akan menggunakan kode berikut:

menggunakan ClipBrd; ...
Papan klip. AsText: = SomeStringData_Variable; 

Untuk mengambil informasi teks dari Clipboard yang akan kami gunakan

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

Catatan: jika kita hanya ingin menyalin teks dari, katakanlah, Edit komponen ke Clipboard, kita tidak harus memasukkan unit ClipBrd ke klausa penggunaan. Metode CopyToClipboard dari TEdit menyalin teks yang dipilih dalam kontrol edit ke Clipboard dalam format CF_TEXT.

prosedur TForm1.Button2Click (Pengirim: TObject); mulai// baris berikut akan memilih // SEMUA teks dalam kontrol edit {Edit1.SelectAll;} Edit1.CopyToClipboard; akhir; 

Gambar Papan Klip

Untuk mengambil gambar grafis dari Clipboard, Delphi harus tahu jenis gambar apa yang disimpan di sana. Demikian pula, untuk mentransfer gambar ke clipboard, aplikasi harus memberi tahu Clipboard apa jenis grafik yang dikirim. Beberapa nilai yang mungkin dari parameter Format mengikuti; masih banyak lagi format Clipboard yang disediakan oleh Windows.

  • CF_TEXT - Teks dengan setiap baris yang diakhiri dengan a CR-LF kombinasi.
  • CF_BITMAP - Grafik bitmap Windows.
  • CF_METAFILEPICT - Grafik metafile Windows.
  • CF_PICTURE - Objek bertipe TPicture.
  • CF_OBJECT - Setiap objek yang gigih.

Metode HasFormat mengembalikan True jika gambar di Clipboard memiliki format yang tepat:

jika Papan klip. HasFormat (CF_METAFILEPICT) kemudian ShowMessage ('Clipboard memiliki metafile'); 

Gunakan metode Tetapkan untuk mengirim (menetapkan) gambar ke Clipboard. Misalnya, kode berikut menyalin bitmap dari objek bitmap bernama MyBitmap ke Clipboard:

 Papan klip. Tetapkan (MyBitmap); 

Secara umum, MyBitmap adalah objek bertipe TGraphics, TBitmap, TMetafile atau TPicture.

Untuk mengambil gambar dari Clipboard, kita harus: memverifikasi format konten clipboard saat ini dan menggunakan metode Tetapkan objek target:

{letakkan satu tombol dan satu kontrol gambar pada form1} {Sebelum menjalankan kode ini tekan kombinasi tombol Alt-PrintScreen}menggunakan clipbrd;... prosedur TForm1.Button1Click (Pengirim: TObject); mulaijika Papan klip. HasFormat (CF_BITMAP) kemudian Gambar1.Gambar. Bitmap. Tetapkan (Papan Klip); akhir; 

Lebih Banyak Kontrol Clipboard

Clipboard menyimpan informasi dalam berbagai format sehingga kami dapat mentransfer data antar aplikasi menggunakan format yang berbeda. Saat membaca informasi dari clipboard dengan kelas TClipboard Delphi, kami terbatas pada format clipboard standar: teks, gambar, dan metafile.

Misalkan Anda sedang bekerja di antara dua aplikasi Delphi yang berbeda; bagaimana Anda menentukan format clipboard khusus untuk mengirim dan menerima data antara kedua program? Untuk tujuan penjelajahan, katakanlah Anda mencoba membuat kode Tempel item menu. Anda ingin itu dinonaktifkan ketika tidak ada teks di clipboard (sebagai contoh).

Karena seluruh proses dengan clipboard terjadi di belakang layar, tidak ada metode kelas TClipboard yang akan memberi tahu Anda ketika beberapa perubahan dalam konten clipboard telah terjadi. Idenya adalah untuk menghubungkan sistem notifikasi clipboard, sehingga Anda dapat mengakses dan menanggapi peristiwa ketika clipboard berubah.

Untuk menikmati lebih banyak fleksibilitas dan fungsionalitas, berurusan dengan pemberitahuan perubahan clipboard dan format clipboard khusus - mendengarkan Clipboard - diperlukan.