Основи в клипборда (Изрязване / Копиране / Поставяне)

Windows Clipboard представлява контейнерът за всеки текст или графика, които са изрязани, копирани или поставени от или към приложение. Тази статия ще ви покаже как да използвате обекта TClipboard за реализиране на функции за изрязване-копиране и поставяне във вашето приложение Delphi.

Клипборд в общи линии

Както вероятно знаете, буферът може да съдържа само едно парче от същия вид данни за изрязване, копиране и поставяне наведнъж. Ако изпратим нова информация в същия формат до буферната памет, изтриваме това, което е имало преди, но съдържанието на Clipboard остава с Clipboard, дори след като ги поставим в друга програма.

TClipboard

За да използваме клипборда на Windows в нашите приложения, трябва да добавим ClipBrd единица до клаузата за използване на проекта, освен когато ограничаваме рязане, копиране и поставяне на компонентите, които вече притежават вградена поддръжка за методите на клипборда. Тези компоненти са TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage и TDBMemo.

instagram viewer

Устройството ClipBrd автоматично представлява обект на TClipboard, наречен Clipboard. Ще използваме CutToClipboard, Копиране в клипборда, PasteFromClipboard, ясно и HasFormat методи за справяне с операции в клипборда и текстови / графични манипулации.

Изпращане и извличане на текст

За да се изпрати някакъв текст в буфера, се използва свойството AsText на обекта Clipboard. Ако искаме например да изпратим низ информация, съдържаща се в променливата SomeStringData в клипборда (изтриване на какъвто и да е текст там), ще използваме следния код:

употреби Clipbrd; ...
Клипборда. AsText: = SomeStringData_Variable; 

За да извлечем текстовата информация от клипборда, която ще използваме

употреби Clipbrd; ...
SomeStringData_Variable: = Клипборд. AsText; 

Забележка: ако искаме само да копираме текста от, да речем, компонент „Редактиране“ в клипборда, не трябва да включваме единицата ClipBrd към клаузата за използване. Методът CopyToClipboard на TEdit копира избрания текст от контрола за редактиране в буфера за клип във формата CF_TEXT.

процедура TForm1.Button2Click (Подател: TObject); започвам// следният ред ще избере // ВСИЧКИ текст в контрола за редактиране {Edit1.SelectAll;} Edit1.CopyToClipboard; край; 

Снимки в клипборда

За да извлече графични изображения от клипборда, Delphi трябва да знае какъв тип изображение се съхранява там. По същия начин, за да прехвърля изображения в буферната памет, приложението трябва да каже на клипборда какъв тип графика изпраща. Следват някои от възможните стойности на параметъра Format; има много повече формати на клипборда, предоставени от Windows.

  • CF_TEXT - Текст с всеки ред, завършващ с a CR-LF комбинация.
  • CF_BITMAP - Растерна графика на Windows.
  • CF_METAFILEPICT - Графична метафайл на Windows.
  • CF_PICTURE - Обект от тип TPicture.
  • CF_OBJECT - Всеки устойчив предмет.

Методът HasFormat връща True, ако изображението в Clipboard има правилния формат:

ако Клипборда. HasFormat (CF_METAFILEPICT) тогава ShowMessage („Клипбордът има метафайл“); 

Използвайте метода на присвояване, за да изпратите (присвоите) изображение в клипборда. Например следният код копира растерната карта от обект на растерна карта, наречен MyBitmap, в клипборда:

 Клипборда. Присвояване (MyBitmap); 

По принцип MyBitmap е обект от тип TGraphics, TBitmap, TMetafile или TPicture.

За да извлечем изображение от клипборда, трябва да: проверим формата на текущото съдържание на клипборда и да използваме метода Assign на целевия обект:

{поставете един бутон и един контрол върху изображението на form1} {Преди да изпълните този код, натиснете Alt-PrintScreen комбинация от клавиши}употреби Clipbrd;... процедура TForm1.Button1Click (Подател: TObject); започвамако Клипборда. HasFormat (CF_BITMAP) тогава Image1.Picture. Bitmap. Присвояване (клипборд); край; 

Повече управление на клипборда

Клипбордът съхранява информация в множество формати, за да можем да прехвърляме данни между приложения, използвайки различни формати. Когато четем информация от клипборда с клас TClipboard на Delphi, ние се ограничаваме до стандартните формати на клипборда: текст, снимки и метафили.

Да предположим, че работите между две различни приложения на Delphi; как бихте определили персонализиран формат на клипборда, за да изпращате и получавате данни между тези две програми? За целите на изследването, да кажем, че се опитвате да кодирате паста елемент от менюто. Искате да бъде деактивиран, когато няма текст в клипборда (като екземпляр).

Тъй като целият процес с клипборда се осъществява зад кулисите, няма метод на клас TClipboard, който да ви информира кога е настъпила промяна в съдържанието на клипборда. Идеята е да се закачите в системата за уведомяване в клипборда, така че да имате достъп до и да реагирате на събития, когато клипборда се промени.

За да се насладите на повече гъвкавост и функционалност, е необходимо да се справите с известията за промяна на клипборда и персонализирани формати на клипборда - слушането на клипборда.

instagram story viewer