русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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

Наиболее простой и примитивный способ передачи данных – использование буфера обмена(clipboard). Буфер обмена – это выделенная в операционной системе область памяти, которой могут пользоваться все приложения (Рис. 20.1).

Рис. 24.1 Буфер обмена.

В буфер можно помещать данные разного типа: текст, графику, звук и т.д. Для вставки информации из буфера в ту или иную программу необходимо, чтобы эта программа умела обрабатывать данный вид информации. Скажем, не удастся через буфер обмена вставить 3D модель из Компаса в Word.

Для работы с буфером из ваших приложений в проект необходимо подключить модуль Clipbrd:

uses …Clipbrd;

После этого в программе появляется глобальная переменная Clipboard. Это функция, возвращающая ссылку на объект типа TClipboardсо своими свойствами и методами.

Простейшая операция с буфером – помещение в него текста. Делается это так:

Clipboard.SetTextBuf(PCHAR('текст'));

Обратите внимание на команду приведения типа PCHAR. Она преобразует "паскалевскую" текстовую строку в строку, оканчивающуюся нулем (по стандарту языка С). Это связано с тем, что в Windows используется именно стандарт С и для взаимодействия с системным буфером обмена необходимо использовать соглашения Windows.

Для получения значения из буфера обмена в виде текстовой строки применяется метод GetTextBuf:

procedure TForm1.Button1Click(Sender: TObject);

var MyBuffer: PChar;

MyBufferSize: Byte;

MyString: String;

begin

// Копировать содержимое буфера обмена в строку

MyString := Clipboard.AsText;

// Установить длину буфера в длину строки

MyBufferSize := Length(MyString);

// Динамически создать буфер

GetMem(MyBuffer, MyBufferSize);

// Копировать в буфер содержимое буфера обмена Clipboard.GetTextBuf(MyBuffer, MyBufferSize);

// Копировать содержимое буфера в окно Edit,
// чтобы убедиться, что все работает корректно

Edit1.Text := MyBuffer;

// Освободить буфер FreeMem(MyBuffer, MyBufferSize);

end;

Если в буфере содержится не текстовая информация (изображение), то копирование, естественно, не выполняется. Чтобы проверить, информация какого типа лежит в буфере, следует заглянуть в свойство HasFormat:

if clipboard.HasFormat(CF_TEXT) then

// вставляем текст из буфера

Основные возможные значения типов информации:

CF_TEXT – текст;

CF_BITMAP – растровое изображение в формате bmp;

CF_METAFILEPICT – векторное изображение в формате wmf;

CF_PICTURE – любое изображение;

CF_COMPONENT – объект Delphi.

Помимо перечисленных, существует огромное количество других форматов.

Ряд визуальных компонентов имеют встроенные методы для работы с буфером. Например, компонента Tedit есть методы CopyToClipboard (поместить введенный текст в буфер обмена) и PasteFromClipboard (скопировать текст из буфера в поле ввода). Увы, в Delphi нет простых способов для работы с изображениями через буфер обмена.

Для очистки буфера используется метод Clipboard.Clear. Наконец, для копирования всего экрана в буфер обмена (в виде растровой картинки) можно сымитировать нажатие клавиши PrintScreen командой

keybd_event(VK_SNAPSHOT, 0, 0, 0);

Просмотров: 808


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.