Pano Temelleri (Kes / Kopyala / Yapıştır)

Windows Panosu, bir uygulamaya veya uygulamadan kesilen, kopyalanan veya yapıştırılan metin veya grafiklerin kapsayıcısını temsil eder. Bu makalede, TClipboard nesnesinin Delphi uygulamanızda kes-kopyala yapıştır özelliklerini uygulamak için nasıl kullanılacağı gösterilecektir.

Pano Genel Olarak

Muhtemelen bildiğiniz gibi, Pano aynı anda kes, kopyala ve yapıştır için aynı türden verilerin yalnızca bir parçasını tutabilir. Panoya aynı formatta yeni bilgiler gönderirsek, daha önce orada olanları sileriz, ancak Panonun içeriği, bu içerikleri başka bir programa yapıştırdıktan sonra bile Panoda kalır.

TClipboard

Windows Panosunu uygulamalarımızda kullanmak için, ClipBrd birimi Pano yöntemleri için halihazırda yerleşik desteğe sahip bileşenlere kesme, kopyalama ve yapıştırma işlemlerini kısıtlamadığımız durumlar dışında, projenin kullanım cümleleri. Bu bileşenler TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage ve TDBMemo'dur.

ClipBrd birimi otomatik olarak Pano adı verilen bir TClipboard nesnesini temsil eder. Kullanacağız

instagram viewer
CutToClipboard, Panoya kopyala, PasteFromClipboard, Açık ve hasFormat Pano işlemleri ve metin / grafik manipülasyonu ile başa çıkma yöntemleri.

Metin Gönderme ve Alma

Pano'ya bir miktar metin göndermek için Pano nesnesinin AsText özelliği kullanılır. Örneğin, sicim SomeStringData değişkeni Panoya değişkeninde bulunan bilgileri (orada ne olursa olsun metni silerek), aşağıdaki kodu kullanacağız:

kullanımları clipbrd; ...
Pano. AsText: = SomeStringData_Variable; 

Panodan metin bilgilerini almak için kullanacağız

kullanımları clipbrd; ...
SomeStringData_Variable: = Pano. AsText; 

Not: Metni yalnızca Düzenle bileşeninden Pano'ya kopyalamak istiyorsak, ClipBrd birimini kullanımlar yan tümcesine dahil etmek zorunda değiliz. TEdit'in CopyToClipboard yöntemi, düzenleme denetimindeki seçili metni CF_TEXT biçimindeki Pano'ya kopyalar.

prosedür TForm1.Button2Click (Gönderen: TObject); başla// aşağıdaki satır seçilecektir // düzenleme kontrolündeki metni TÜM {Edit1.SelectAll;} Edit1.CopyToClipboard; son; 

Pano Görüntüleri

Panodan grafik görüntüler almak için Delphi, orada ne tür görüntü depolandığını bilmelidir. Benzer şekilde, görüntüleri panoya aktarmak için, uygulama Panoya ne tür grafikler gönderdiğini söylemelidir. Format parametresinin olası değerlerinden bazıları şunlardır; Windows tarafından sağlanan daha birçok Pano biçimi vardır.

  • CF_TEXT - Her satırı bir ile biten metin CR-LF kombinasyon.
  • CF_BITMAP - Bir Windows bitmap grafiği.
  • CF_METAFILEPICT - Bir Windows meta dosyası grafiği.
  • CF_PICTURE - TPicture türünde bir nesne.
  • CF_OBJECT - Kalıcı herhangi bir nesne.

Panodaki görüntü doğru biçime sahipse HasFormat yöntemi True değerini döndürür:

Eğer Pano. HasFormat (CF_METAFILEPICT) sonra ShowMessage ('Pano meta dosyası var'); 

Panoya görüntü göndermek (atamak) için Ata yöntemini kullanın. Örneğin, aşağıdaki kod, Bitmap'i MyBitmap adlı bir bitmap nesnesinden Panoya kopyalar:

 Pano. Ata (MyBitmap); 

Genel olarak MyBitmap, TGraphics, TBitmap, TMetafile veya TPicture türünde bir nesnedir.

Panodan bir görüntü almak için şunları yapmalıyız: panonun geçerli içeriklerinin biçimini doğrulamalı ve hedef nesnenin Atama yöntemini kullanmalıyız:

{form1 üzerine bir düğme ve bir görüntü denetimi yerleştirin} {Bu kodu yürütmeden önce Alt-PrintScreen tuş bileşimine basın}kullanımları clipbrd;... prosedür TForm1.Button1Click (Gönderen: TObject); başlaEğer Pano. HasFormat (CF_BITMAP) sonra Image1.Picture. Bitmap. Ata (Pano); son; 

Daha fazla Pano Kontrolü

Pano, farklı formatlar kullanarak uygulamalar arasında veri aktarabilmemiz için bilgileri birden çok formatta saklar. Delphi'nin TClipboard sınıfıyla panodan bilgi okurken standart pano biçimleriyle sınırlıyız: metin, resimler ve meta dosyalar.

İki farklı Delphi uygulaması arasında çalıştığınızı varsayalım; bu iki program arasında veri göndermek ve almak için özel pano biçimini nasıl tanımlarsınız? Keşif amacıyla, bir Yapıştır'ı kodlamaya çalıştığınızı varsayalım menü seçeneği. Panoda metin olmadığında devre dışı bırakılmasını istersiniz (örnek olarak).

Pano ile tüm süreç sahnelerin arkasında gerçekleştiğinden, panonun içeriğinde bir değişiklik olduğunda sizi bilgilendirecek bir TClipboard sınıfı yöntemi yoktur. Fikir, pano bildirim sistemine bağlanmaktır, böylece pano değiştiğinde olaylara erişebilir ve yanıt verebilirsiniz.

Daha fazla esneklik ve işlevsellikten yararlanmak için pano değiştirme bildirimleri ve özel pano biçimleriyle (Panoyu dinleme) ilgilenmek gerekir.