Содержание материала

Один из примеров обработчиков события OnDragDrop выглядит так:

Code:

procedure TFormI.OLEContainerlDragDropfSender, Source:        TObject;

X, Y:        Integer);

begin

if Source is TOLEDropNotify then

   with Source as TOLEDropNotify do

     begin

       if (DataFormat = CF_TEXT) then

         begin

           Labell.Caption := StrPas(GlobalLock(DataHandle));

           GlobalUnlock(DataHandle) ;

           GlobalFree(DataHandle) ;

         end

       else

         if DataFormat = Word(-l) then

           OLEContainerI.PInitInfo := TOLEDropNotify(Source).PInitInfo;

     end;

end;

 

Обратите внимание, что в этом примере полученную структуру PInitInfo не нужно освобождать при помощи ReleaseOLEInitInfo.

Вставка объектов OLE из буфера обмена

Вставку реализует специальный диалог, вызываемый функцией:

 

function PasteSpecialDlg(Form: TForm;

const Fmts: array of BOLEFormat; HelpContext: THelpContext;

var Format: Word; var Handle: THandle;

var PInitInfo: Pointer ): Boolean;

 

Параметры этой функции означают следующее:

Form — принимающая данные форма;

Fmts — список поддерживаемых форматов данных;

HelpContext — контекст системы помощи для диалога (в файле с расширением .HLP, связанном с приложением). Если этот параметр имеет значение 0, то кнопка Help будет отсутствовать;

Функция присваивает значения трем параметрам:

Format — выбранный пользователем формат (из доступных в диалоге);

Handle — дескриптор данных;

PInitInfo — указатель на структуру данных инициализации. Функция возвращает True, если пользователь нажал в диалоге кнопку ОК или клавишу <Enter>. Логическая взаимосвязь между значениями Format, Handle и PInitInfo такая:

• если пользователь решил присоединить или встроить имеющийся в буфере обмена объект, то в параметре Format возвращается значение -1. В этом случает дескриптор недействителен, а смысл имеет только параметр PTnitTnfo:

• если вставляются имеющиеся в буфере обмена данные одного из обычных форматов, то параметр Format содержит его идентификатор, Handle — дескриптор соответствующих данных, a PInitInfo равен nil.

Перед тем, как вызывать PasteSpecialDIg, нужно убедиться в целесообразности этого, вызвав функцию:

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить