If Clipboard.HasFormat(CF_PERSONDATA) then

begin LineClipboard.PasteFromClipboard; StringGrid1.Cells[0, StringGrid1.Row]:=LineClipboard.LineData.Name; StringGrid1.Cells[1, StringGrid1.Row]:=LineClipboard.LineData.LastName; StringGrid1.Cells[2, StringGrid1.Row]:=LineClipboard.LineData.Bothday; StringGrid1.Cells[3, StringGrid1.Row]:=IntToStr(LineClipboard.LineData.Age); StringGrid1.Cells[4, StringGrid1.Row]:=LineClipboard.LineData.Telephone;

end;

LineClipboard.Free;

Memo1.Lines.Clear; Memo1.PasteFromClipboard; end;

Опять же, здесь объявлена переменная LineClipboard, которая инициализируется в первой строке кода. После этого я проверяю, если буфер обмена содержит информацию в формате CF_PERSONDATA (это созданный нами формат), то мы читаем буфер с помощью метода PasteFromClipboard. После этого я заполняю поля текущей строки из структуры LineData объекта LineClipboard.

В самом конце процедуры я очищаю компонент Memo1 и заставляю его с помощью метода PasteFromClipboard прочитать данные из буфера. Этот компонент не знает о существовании нашего формата и читает данные из буфера обмена как текст (это его родной формат). Получается, что мы увидим в компоненте то, что мы записали в свойство AsText объекта Clipboard. Посмотри на рисунок 23.4.2 и убедись в этом. Там я заполнил поля первой строки, скопировал строку в буфер и потом вставил данные в третью строку. Одновременно со вставкой в компонент StringGrid произошла вставка текста буфера в компонент Memo.

На компакт диске, в директорииПримерыГлава 23New Formatты можешь увидеть пример этой программы.