Проект Порталус


 

CompDocs on-line

Инвестиции WebMoney

 
CompDocs
Вебмастеру
Программисту
Пользователю
Геймеру
Мабила
Новости
Отдохни
Беседка
Обои
Анонс
Партнеры
Docs.com.ru

Web-мастеру:

PHP
ASP .NET
Perl
JavaScript
CSS
HTML
Раскрутка
Сервисы

Программисту:

DirectX
OpenGL
Pascal
Алгоритмы

Пользователю:

Windows
Linux
BIOS
Обои

Посетителю:

Форум
Юмор
Рассылки
Объявления
ФизМат
Тесты
Работа


Книги с доставкой

Общие вопросы, справочная литература (97)

Для начинающих (214)

Аппаратное обеспечение: компьютеры, периферия, оргтехника (54)

Базы данных. СУБД (65)

Интернет (85)

Компьютерная безопасность. Хакинг, крэкинг, фрикинг (29)

Компьютерные сети и протоколы (45)

Операционные системы (143)

Программное обеспечение (447)

Языки и среды программирования, технологии и т.п. (323)

Прочие издания (46)


 

Источник: realcoding.net

Работа с буфером обмена в Delphi

Каждый юзер наверняка сталкивался с помещением информации в буфер и извлечением ее оттуда. Тот же пресловутый Ворд при нажатии кнопки "копировать" помещает выделенный текст в буфер, а при нажатии "вставить" - извлекает его. Таким же образом помещаться в буфер могут изображения и данные разных форматов. Итак, буфер - это специальная область оперативной памяти в которую Windows помещает пользовательские данные для обмена между разными приложениями или внутри одного приложения.

Для того, чтобы работать с буфером обмена из Delphi, необходимо подключить к своему приложению модуль clipbrd.pas, то есть пишем в uses clipbrd.pas,...
 

РАБОТА С ТЕКСТОМ
Самый простой способ поместить в буфер обмена какой-либо текст - это добавить следующий код: 

Clipboard.asText:='ВАШ_ТЕКСТ';

или

Clipboard.SetTextBuf(PChar('ВАШ_ТЕКСТ'));

Чтобы извлечь текст из буфера, можно сделать так (поместим текст в Memo1:TMemo):

Memo1.Text:=Clipboard.asText;

РАБОТА С ИЗОБРАЖЕНИЯМИ
Если вы работаете с компонентом Image1:Timage, то самым простым способом поместить в него изображение из буфера будет присвоение хэндла данных Clipboard'a хэндлу Tbitmap: 

Image1.Picture.Bitmap.Handle:=Clipboard.GetAsHandle(CF_bitmap);

КАК УЗНАТЬ ФОРМАТ ДАННЫХ БУФЕРА В ДАННЫЙ МОМЕНТ
Для этого существует специальная функция Clipboard.HasFormat(Format: WORD):boolean;
Функция возвращает true, если в буфере именно этот формат, в противном случает возвращает false.
Описание форматов:
CF_TEXT - Обычный текст, заканчивающийся <CR><LF>
CF_BITMAP - Битмап изображение *.bmp
CF_METAFILEPICT - Метафайл изображение *.wmf
CF_PICTURE - Объект типа TPicture
CF_COMPONENT - Компонента Delphi (Tbutton, например)
CF_OBJECT - Любой объект в Delphi типа TPersistent

ОЧИЩАЕМ БУФЕР
Чтобы очистить буфер обмена от содержащихся в нем данных, используйте процедуру Clipboard.clear;
ОТКРЫВАЕМ // ЗАКРЫВАЕМ
Если вы хотите, чтобы все приложения, кроме вашего не могли изменять содержимое буфера, используйте 

Clipboard.Open;

После пользования буфером, его необходимо закрывать процедурой Clipboard.Close;

З.Ы.
Многие объекты в Delphi изначально имеют методы, позволяющие помещать данные в буфер и извлекать их оттуда, примером может служить Tpicture.

 

Ссылки по теме:

  • Модуль Timer для Паскаля и не только
  • Как я стал полиндромом
  • Функции API (часть I): функции вызова диалоговых окон
  • Комментарии к статье
    Ваше имя:

    Ваш e-mail:
      извещать о новых отзывах в теме
    публиковать мой e-mail
    Комментарий:

    Copyright © 2003-2004 Путяк Владислав.
    Использование материалов журнала разрешается только с указанием ссылки на первоисточники и сайт журнала - http://docs.com.ru



    @ portalus.ru